\chapter{径迹示踪和物理过程}
\thispagestyle{empty}
\section{径迹示踪}
\subsection{基础概念}
\subsubsection{径迹示踪体系}
所有包含例子输运的GEANT4过程都按类别区分。就“径迹示踪“的名称而言，在径迹示踪的类别内，没有粒子输运。G4TrackingManager是一个交互类，这个类可以链接交互事件、径迹和径迹示踪类别。这个类的一个实例是在示踪类别中，处理上层对象，即事件管理与下层对象之间的信息交互。事件管理是G4EventManager类的单例实例。

径迹示踪管理从事件管理接收到一个径迹，并执行一些列行为来完成示径迹示踪。G4TrackingManager 整合指针到G4SteppingManager、G4Trajectory和G4UserTrackingAction。同时，也会“使用”G4Track和G4Setp。

G4SteppingManager在粒子的径迹示踪过程中很重要，它关注所有通过 与粒子输运（例如，体积和物质的相互反应）相关的不同类别物体间的信息。它的公共方法Stepping()控制粒子的步进信息。下面说明执行单步的过程：
\begin{enumerate}
\item 如果粒子静止（例如，零动能状态），每一个处于活动状态的AtReset过程提同时供了一个基于它描述互相作用的步长。这个过程将引用描述的最小步长。
\item 每一个处于活动离散或连续的过程必须提供基于它描述互相作用的步长。并且所描述的步长都是最小值。
\item 体积导航模块计算出“安全距离”，这个安全指于相邻体积边界的距离。如果过程中最小的物理步长小于“安全距离”，那么物理步长将会自动更替为更长一级的步长。在这种情况下，公共方法Stepping()将不会执行近一步的体积计算。
\item 如果过程中最小的物理步长大于“安全距离”，那么与相邻边界的距离会重新计算。
\item 公共方法Stepping()将采用更小或者最小的物理步长与体积步长。
\item 公共方法Stepping()引用所有的处于活动状态的连续过程，需要注意的是：所有的引用的过程执行完毕后，粒子的动能才会更新。动能的变化是这些每个过程动能变化的总和。
\item 在引用离散过程之前，当前的径迹特征被更新，同时，过程中产生的次级粒子保存在SecondaryList里。更新的特征包含：
\begin{itemize}
  \item 当前的径迹粒子的动能（注释“sunEnergyChange”是每一个过程前后能量变化的总和）
  \item 位置和时间（译者认为是两者是一一对应的，应指的是某个时间粒子的位置）
\end{itemize}
\item 在连续的过程中，可以查看粒子的动能是否满足粒子终止的条件,如果粒子的动能降低为零，条件合适，下一步骤将会应用AtRest过程。
\item 引用离散的过程，在调用此过程后。
\begin{itemize}
  \item 当前粒子径迹的能量，位置和时间将会更新，同时
  \item 次级粒子相关的数据保存在SecondaryList里。
\end{itemize}
\item 在离散过程中，可以查看粒子的动能是否满足粒子终止的条件
\item "安全距离"更新
\item 如果体积边界限制步长，将会使粒子进入相邻的体积内。
\item 运行碰撞信息。
\item 调用用户介入类G4UserSteppingAction。
\item 保存数据到粒子轨迹。
\item 更新离散过程的平均自由程。
\item 如果母代粒子未消失，重新设定已经发生的离散过程的最大相互作用距离。
\item 完成单步过程。
\end{enumerate}


\subsubsection{过程是什么？}
只有过程可以改变G4Track的信息、通过ParticleChage增加并保存次级粒子的径迹数据。G4VProcess是所有过程的一个基础类，它包含三种DoIt和GetPhysicalInteraction方法，它用于总体地描述相互作用。如果用户想要修改G4Track的信息，他\textbf{应该}新建一个特殊的过程，并且为粒子注册过程。
\subsubsection{径迹是什么？}
G4Track保存|当前|的粒子信息。（例如，能量，运动，位置，时间等等），同时也保存“静态”信息（例如，质量，电性，生命周期等等）。需要注意的是，当 调用AlongStepDoIts进行某一单步操作时，G4Track在单步开始时候保存信息。在完成所有的AlongStepDoIt时，G4Track会更新信息。另一方面，在一次远程调用PostStepDoIt之后，G4Track会更新信息。
\subsubsection{单步是什么？}
G4Step保存单步的临时信息。这些信息包含单步的开始与结束时的数据，PreStepPoint和PostStepPoint，这两个点包含了点的坐标轴和含有点的体积。G4Setp也保存两点之间径迹特性的变化。这些特性如能量，运动将将会与一些活动的过程同时调用。
\subsubsection{ParticleChange是什么？}
在DoIt反应过程不会直接改变任何G4Track的信息。但是，这些过程会提出新的更改作为使用ParticleChange相互作用的结果，在每一次DoIt之后，ParticleChange基于提出的更改而更新PostStepPoint，然后，在完成所有的AlongStepDoIts与每一个PostStepDoIt之后，G4Track会更新信息。

\subsection{获取径迹与单步信息}
\subsubsection{如何获取径迹信息}
通过调用G4Track类提供的一些Get方法来获取径迹信息。详细信息参见包含在\$G4INCLUDE内的头文件\href{http://www-geant4.kek.jp/lxr/source//track/include/G4Track.hh}{G4Track.hh}
，典型的可获取信息如下：
\begin{itemize}
  \item (x,y,z)坐标
  \item 全局时间（从新建事件开始计时）
  \item 局部时间（从新建径迹开始计时）
  \item 本征时间（在剩余的框架内，从径迹开始计时）
  \item 运动方向（单位向量）
  \item 动能
  \item 累积体积径迹长度
  \item 累积真实径迹长度
  \item 动态粒子指针
  \item 物理体积指针
  \item Track ID号
  \item 母代径迹ID号
  \item 当前单步号
  \item 径迹状态
  \item 径迹开始点（顶点位置）的(x,y,z)坐标
  \item 径迹开始点（顶点位置）的运动方向
  \item 径迹开始点（顶点位置）的动能
  \item 新建当前径迹过程的指针
\end{itemize}

\subsubsection{如何获取单步信息}
通过调用G4Setp/G4StepPoint类的一些Get方法来获取单步和单步点位信息。
\href{http://www-geant4.kek.jp/lxr/source//track/include/G4Step.hh}{G4Setp}，典型可获取信息包含如下：
\begin{itemize}
  \item PreStep和PostStepPoint的指针
  \item 体积单步步长（在多次散射修正之前的单步步长）
  \item 真是单步步长（在多次散射修正之后的单步步长）
  \item PreStepPoint到PostStepPoint的位置和时间增加量
  \item PreStepPoint到PostStepPoint的运动和能量的增加量（注意：为获取单步的能量沉积，不能使用“变化能量”，必须如下的使用“总能量沉积”）
  \item G4Track的指针
  \item 在单步内的总能量沉积
      \begin{itemize}
        \item 由于能量损失而引起的能量沉积，和
        \item 因为能量低于反应界面阈值而没有产生产生次级粒子所损失的能量
      \end{itemize}
  \item 在单步内非电离而产生能量沉积
  \item 在当前径迹示踪中产生的次级粒子的径迹
      \begin{itemize}
        \item 注意：不仅仅包含\textbf{当前}单步中产生的次级粒子，所有的次级粒子的信息都包含。
      \end{itemize}
\end{itemize}

\subsubsection{如何获取”粒子变更“}
通过调用G4ParticleChange类的一些Get方法来获取粒子变更信息。
\hyperref{http://www-geant4.kek.jp/lxr/source//track/include/G4ParticleChange.hh}{G4ParticleChange},典型可获取信息包含如下：
\begin{itemize}
  \item 母代粒子的最终运动方向
  \item 母代粒子的最终动能
  \item 母代粒子的最终位置
  \item 母代粒子的最终全局时间
  \item 母代粒子的最终本征时间
  \item 母代粒子的最终极性
  \item 母代粒子的状态（G4TrackStatus）
  \item 真实单步步长（这个被多次散射来射用，用于存储从体积步长到真实步长的变化结果）
  \item 局部能量沉积，这包含
      \begin{itemize}
        \item 能量损失过程引起的能量沉积，或
        \item 因为能量低于反应界面阈值而没有产生产生次级粒子所损失的能量
      \end{itemize}
  \item 次级粒子的数量
  \item 次级粒子的列表（G4Track列表）
\end{itemize}

\subsection{次级粒子的控制}
从物理过程到径迹示踪，通过一些G4Track来控制次级粒子。G4ParticleChange提供如下四种物理过程的方法：
\begin{itemize}
  \item AddSecondary( G4Track * aSecondary )
  \item AddSecondary( G4DynamicParticle * aSecondary )
  \item AddSecondary( G4DynamicParticle * aSecondary, G4ThreeVector position )
  \item AddSecondary( G4DynamicParticle * aSecondary, G4double time)
\end{itemize}
此外，G4track的构建的方法是使用本文中给出的信息。
\subsection{用户行为}
程序中有两个类允许用户接入粒子示踪，他们是：
\begin{itemize}
  \item G4UserTrackingAction,和
  \item G4UserSteppingAction
\end{itemize}
上述的两个类都提供用户在粒子示踪的特殊点位链接Geant4内核。

\begin{center}
\begin{tabular}{p{14.5cm}}
\specialrule{0.02em}{1pt}{1pt}
\textbf{注意：}用户\textbf{不应该}（和不能）在UserSteppingAction更改G4Track。唯一例外的是TrackStatus。\\
\specialrule{0.02em}{1pt}{1pt}
\end{tabular}
\end{center}

\begin{center}
\begin{tabular}{p{14.5cm}}
\specialrule{0.02em}{1pt}{1pt}
\textbf{注意：}用户在用户行为中在执行非正常/非物理类时必须要小心。更多详情参见\hyperref[Killing Tracks in User Actions and Energy Conservation ]{Killing Tracks in User Actions and Energy Conservation \textcolor{red}{这个地方需要一个label} }\\
\specialrule{0.02em}{1pt}{1pt}
\end{tabular}
\end{center}

\subsection{冗余信息输出}
冗余信息输出信息标志位置可以打开或关闭，打印的有关径迹/单步的信息总量，以及信息内容的复杂程度，可以通过冗余信息标志位的值来控制，例如：
\begin{lstlisting}[numbers=none]
G4UImanager * UI = G4UImanager::GetUIpointer();
UI->ApplyCommand("/tracking/verbose 1");
\end{lstlisting}

\subsection{轨迹与轨迹点}
\subsubsection{G4Trajectory和G4TrajectoryPoint}
G4Trajectory和G4TrajectoryPoint是GEANT4中提供的可继承实体类，这两个类分别继承于 G4VTrajectory和G4VTrajectoryPoint基类。当G4Track在G4EventManager传递时，G4Trajectory类对象由G4TrackingManager新建。
G4Trajectory 有如下数据成员：
\begin{itemize}
  \item 母代径迹与径迹的ID号
  \item 粒子名称，电性和PDG码
  \item G4TrajectoryPoint指针的集合
\end{itemize}
G4TrajectoryPoint相当与一个单步点，这个点沿着径迹之后的路径。粒子的位置由G4ThreeVectorIts给出。一个G4TrajectoryPoint类对象由G4Trajectory中的 AppendStep()方法新建，在单步的最后，G4TrackingManager调用AppendStep()这个方法。G4Trajectory创建时后同时创建第一个点，因此，第一个点是初始的顶点。
轨迹的新建可以通过调用G4TrackingManager::SetStoreTrajectory(G4bool)来控制。 UI命令/tracking/storeTrajectory \_bool\_拥有相同功能。用户可以设置在它的G4UserTrackingAction::PreUserTrackingAction()方法中对于每个单据的径迹设置标志位。

\begin{center}
\begin{tabular}{p{14.5cm}}
\specialrule{0.02em}{1pt}{1pt}
\textbf{注意：}用户不因该在反应中为次级粒子新建轨迹，因为这会占用大量的内存。\\
\specialrule{0.02em}{1pt}{1pt}
\end{tabular}
\end{center}
在一个事件中所有的被创造的轨迹都保存在G4TrajectoryContainer类对象中，这个对象将会被保存在G4Event中。
为了描绘或者打印出一个事件中产生的轨迹，用户可能会从他们相对的G4UserEventAction::EndOfEventAction()调用G4VTrajectory中的DrawTrajectory()或ShowTrajectory()方法。体积描绘必须在轨迹描绘之前，基于粒子的电性描绘轨迹的颜色：
\begin{itemize}
  \item 负电性：红色
  \item 中性：绿色
  \item 正电性：蓝色
\end{itemize}

\begin{center}
\begin{tabular}{p{14.5cm}}
\specialrule{0.02em}{1pt}{1pt}
\textbf{注意：}由于G4Navigator的修改，只要轨道没有闯过体积边界，在不被分解为更小的单步的情况下，径迹可以执行超过一轮轨道径迹，因此描绘的轨迹可能不是一个圆环。\\
\specialrule{0.02em}{1pt}{1pt}
\end{tabular}
\end{center}

\subsubsection{定制轨迹和轨迹点}
G4Track和G4Step是迁移类；他们在事件的结尾是无效的。因此可继承实体类G4VTrajectory和G4VTrajectoryPoint是用户可以使用的对于事件结尾分析或者从头到尾分析的几个唯一的类。就像上文中提到的，GEANT4提供的默认的类仅仅有很少的数量，例如，G4Trajectory和G4TrajectoryPoint。用户可以通过从相对的基类直接继承来定制他们自己的轨迹和轨迹点类。

为了使用定制轨迹，用户必须在G4UserTrackingAction::PreUserTrackingAction()方法中构建一个实体轨迹类对象，并且通过使用SetTrajectory()方法将构建的实体类对象的指针传递到G4TrackingManager。必须在A用户可执行的轨迹类AppendStep()方法中构建定制的轨迹点类对象。这个AppendStep()需要通过G4TrackingManager调用。

为了定制用户轨迹描述。用户可以在他们自己的轨迹类里使用DrawTrajectory()。

当一个用户版的G4Trajectory生命一些新的类变量，必须为这个新变量分配内存于释放内存。检查分配内存的配额大小与 sizeof(G4Trajectory)是有用的。因为没有分配内存与释放内存，所以这两点不会在G4VTrajectory里应用。

\section{物理过程}
\subsection{概述}
物理过程描述了粒子如何与物质相互作用。GEANT4提供7个主要的反应过程分类：
\begin{enumerate}
  \item electromagnetic（电磁相互作用过程，标准的和低能的）
  \item hadronic（强子相互作用过程，纯强子，辐射率表，光电-核）
  \item decay（衰变过程）
  \item photolepton-hadron（光青紫与强子的相互作用过程）
  \item optical（光学的光子过程）
  \item parameterization（参数化过程，即fast simulation）
  \item transportation（输运过程）
\end{enumerate}

在GEANT4程序的设计中，物理过程中的范化和抽象化是关键因素。从径迹示踪的观点上看，所有的物理过程都以相同的方式处理。GEANT4方法允许任何人新建物理过程并为某个粒子类型设计物理过程。这种开源设计允许个人或者用户为了创新、领域特性的或者用户定制的目的新建物理过程。

每个物理过程有两组方法，这些方法在径迹示踪中扮演重要的角色，例如GetPhysicalInteractionLength (GPIL)和DoIt。GPIL方法给出从当前的空间-时间点到下一个相邻的空间-时间点的单步步长。它基于物理过程的反应截面来计算相互作用的可能性。在GPIL的最后，调用DoIt方法。DoIt方法执行相互作用的具体细节，改变粒子的能量，运动，方向和位置，如果条件合适，这个方法可以产生次级径迹。这些改变的数据保存在G4VParticleChange对象中（见\hyperref[Particle change]{Particle change\textcolor{red}{这里需要一个label}}）。

\subsubsection*{G4VProcess}
G4VProcess是所有的物理过程的一个基础类。每一个物理过程必须执行G4VProcess的虚拟方法，这个虚拟方法描述了相互作用（DoIt），决定了相互作用发生的的时间（GPIL）。为了满足多用类型的相互作用方式，G4VProcess提供了三种DoIt方法：
\begin{itemize}
  \item G4VParticleChange * AlongStepDoIt( const G4Track\& track, const G4Step\&stepData )
  \item[ ]当G4SteppingManager输运一个粒子通过单步时，调用这个方法。忽略物理过程中产生得最小单步步长，与每一个确定的物理过程相对应得AlongStepDoIt应用在每一个单步。每一个径迹信息得改变都记录并累积在G4Step中。在所用的物理过程都被调用过这个类之后，因为AlongStepDoIt产生的变化都被记录在G4Track中，这些变化包含粒子的重定位与安全距离的更新。注意，在所有的AlongStepDoIt远程调用之后，如果单步被限制在体积的边界，G4Track对象的终点竟会在一个新的体积中。为了获得上一个旧体积的信息，必须链接G4Step，因为G4Step包含两个终点的信息。
  \item G4VParticleChange * PostStepDoIt( const G4Track\& track, const G4Step\&stepData )
  \item[]只有它的物理过程已经产生了最小单步步长，或者物理过程已经发生，这个方法在单步的终点才会被调用。在每次PostStepDoIt，AlongStepDoIt方法远程调用之后，G4Track将会更新。
  \item  G4VParticleChange * AtRestDoIt( const G4Track\& track, const G4Step\&stepData )
  \item[ ]只有它的物理过程已产生了最小单步步长，或者物理过程已经发生，这个方法调用仅仅是用于粒子停止。
\end{itemize}
对于上述的每一个DoIt方法，G4VProcess提供了相符合的纯虚GPIL方法：
\begin{itemize}
  \item  G4double PostStepGetPhysicalInteractionLength( const G4Track\& track,G4double previousStepSize, G4ForceCondition * condition )
  \item[ ]这个方法产生他们的物理过程允许的单步步长，也提供一个标志位，在不考虑单步步长的前提下，来强制互相作用发生。
  \item G4double AlongStepGetPhysicalInteractionLength( const G4Track\& track,G4double previousStepSize, G4double currentMinimumStep, G4double\&proposedSafety, G4GPILSelection * selection )
  \item[ ]这个方法产生他们的物理过程允许的单步步长。
  \item G4double AtRestGetPhysicalInteractionLength( const G4Track\& track,G4ForceCondition * condition )
  \item[ ]这个方法产生他们的物理过程允许的单步步长，也提供一个标志位，在不考虑单步步长的前提下，来强制互相作用发生。
\end{itemize}
G4VProcess中的其他纯虚方法如下：
\begin{itemize}
  \item virtual G4bool IsApplicable(const G4ParticleDefinition\&)
  \item [ ]如果物理过程对象适合粒子类型，则返回true。
  \item virtual void PreparePhysicsTable(const G4ParticleDefinition\&)，和
  \item virtual void BuildPhysicsTable(const G4ParticleDefinition\&)
  \item [ ]由过程管理器给上述两个纯虚方法传递信息，无论何时改变的截断半径值，反应界面列表应该准备和重建。如果物理过程不受到截断半径值的影响，这个方法不是强制性的。
  \item virtual void StartTracking()和
  \item virtual void EndTracking()
  \item 由径迹示踪管理器在当前径迹示踪的开始与结束时，给上述两个纯虚方法传递信息。
\end{itemize}

\subsubsection*{物理过程的其他基础类}
特殊的物理过程可能都继承与其他七个附加的虚拟基础类，这个些虚拟基础类继承于G4VProcess。他们其中的三种被用过简单的物理过程：
\subsection*{G4VRestProcess}物理过程仅仅使用AtRestDoIt方法。

例如：中子捕获
\subsection*{G4VDiscreteProcess}物理过程仅仅使用PostStepDoIt方法。

例如：康普顿散射，强子非弹性互相作用。

\noindent 剩下的四个类为了更复杂的物理过程提供：
\subsection*{G4VContinuousDiscreteProcess}物理过程使用AtRestDoIt和PostStepDoIt方法。

例如：粒子输运，电离（能量损失和delta射线）
\subsection*{G4VRestDiscreteProcess}

例如：正电子湮灭，衰变（在飞行于静止状态）
\subsection*{G4VRestContinuousProcess}物理过程使用AtRestDoIt和PostStepDoIt方法。
\subsection*{G4VRestContinuousDiscreteProcess}物理过程使用AtRestDoIt、AlongStepDoIt和PostStepDoIt方法。

\subsubsection*{粒子改变}
G4VParticleChange和它的派生类用于存储径迹的最终状态信息，这些信息包含次级粒子径迹，此径迹由DoIt方法产生。G4VParticleChange实例是是唯一的对象，这个对象的信息由物理过程更新，因此，G4VParticleChange也负责更新单步。stepping管理器集合次级粒子的径迹，仅通过粒子改变发送请求来更新G4Step。

G4VParticleChange是一个抽象类。它包含一个最小套的方法用于更新G4Step于控制次级粒子。因此，一个物理过程可以通过继承G4VParticleChange来定义他自己的粒子改变。提供三种纯虚方法如下：
\begin{itemize}
  \item virtual G4Step * UpdateStepForAtRest( G4Step * step) ,
  \item virtual G4Step * UpdateStepForAlongStep( G4Step * step ), 和
  \item virtual G4Step * UpdateStepForPostStep( G4Step * step),
\end{itemize}
这些纯虚方法与G4VProcess中的三种DoIt方法相符合，每一种继承类应该执行这些方法。

\subsection{电磁反应}
本章节总结了GEANT4中的电磁（EM）反应的物理过程。更详细的电磁信息见（EM）\pageref{}\textcolor{red}{页}。为获取执行这些物理过程的详细信息，可以参照\href{http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/PhysicsReferenceManual/fo/PhysicsReferenceManual.pdf}{Physics Reference Manual}。

为了使用电磁物理过程，一些数据文件是必须的。用户应该设置环境变量G4LEDATA路径到这些目录下。这些文件与GEANT4一起发布在网站上，可以通过GEANT4下载页面获得。对于GEANT4 version 10.3， G4EMLOW6.50数据是必须的。
\subsubsection{电磁物理过程}
下列是GEANT4中关于电磁物理过程的总结
\begin{itemize}
\item 光子过程
    \begin{itemize}
      \item Gamma conversion (also called pair production, class name G4GammaConversion)
      \item Photo-electric effect (class name G4PhotoElectricEffect)
      \item Compton scattering (class name G4ComptonScattering)
      \item Rayleigh scattering (class name G4RayleighScattering)
      \item Rayleigh scattering (class name G4RayleighScattering)
      \item Muon pair production (class name G4GammaConversionToMuons)
    \end{itemize}
\item 电子/正电子过程
    \begin{itemize}
      \item Ionisation and delta ray production (class name G4eIonisation)
      \item Bremsstrahlung (class name G4eBremsstrahlung)
      \item e+e- pair production (class name G4ePairProduction)
      \item Multiple scattering (class name G4eMultipleScattering)
      \item Positron annihilation into two gammas (class name G4eplusAnnihilation)
      \item Positron annihilation into two muons (class name G4AnnihiToMuPair)
      \item Positron annihilation into hadrons (class name G4eeToHadrons)
    \end{itemize}
\item Muon 介子过程
    \begin{itemize}
      \item Ionisation and delta ray production (class name G4MuIonisation)
      \item Bremsstrahlung (class name G4MuBremsstrahlung)
      \item e+e- pair production (class name G4MuPairProduction)
      \item Multiple scattering (class name G4MuMultipleScattering)
    \end{itemize}
\item 强子/离子过程
    \begin{itemize}
      \item Ionisation (class name G4hIonisation)
      \item Ionisation for ions (class name G4ionIonisation)
      \item Ionisation for heavy exotic particles (class name G4hhIonisation)
      \item Ionisation for classical magnetic monopole (class name G4mplIonisation)
      \item Multiple scattering (class name G4hMultipleScattering)
      \item Bremsstrahlung (class name G4hBremsstrahlung)
      \item e+e- pair production (class name G4hPairProduction)
    \end{itemize}
\item  库伦散射过程
    \begin{itemize}
      \item Alternative process for simulation of single Coulomb scattering of all charged particles (class name G4CoulombScattering)
      \item Alternative process for simulation of single Coulomb scattering of ions (class name G4ScreenedNuclearRecoil)
    \end{itemize}
\item 极性电子或者伽马射线物理过程模拟
    \begin{itemize}
      \item Compton scattering of circularly polarized gamma beam on polarized target (class nameG4PolarizedCompton)
      \item Pair production induced by circularly polarized gamma beam (class nameG4PolarizedGammaConversion)
      \item Photo-electric effect induced by circularly polarized gamma beam (class nameG4PolarizedPhotoElectricEffect)
      \item Bremsstrahlung of polarized electrons and positrons (class name G4ePolarizedBremsstrahlung)
      \item Ionisation of polarized electron and positron beam (class name G4ePolarizedIonisation)
      \item Annihilation of polarized positrons (class name G4eplusPolarizedAnnihilation)
    \end{itemize}
\item X射线和带电粒子产生的光质子物理过程的模拟
    \begin{itemize}
      \item Synchrotron radiation (class name G4SynchrotronRadiation)
      \item Transition radiation (class name G4TransitionRadiation)
      \item Cerenkov radiation (class name G4Cerenkov)
      \item Scintillations (class name G4Scintillation)
    \end{itemize}
\item 上述描述的使用物理模型类的过程，这些过程应用可能依据粒子的能量范围有所重合。在不同的模型下改变能量范围是有效的，为了适应其他特定的模型到粒子类型，能量范围，和G4Region。下列的替代模型在标准电磁场次级库下是可用：
    \begin{itemize}
      \item Ionisation in thin absorbers (class name G4PAIModel)
      \item Ionisation in thin absorbers (class name G4PAIPhotModel)
      \item Ionisation in low-density media (class name G4BraggIonGasModel)
      \item Ionisation in low-density media (class name G4BetheBlochIonGasModel)
      \item Multiple scattering (class name G4UrbanMscModel)
      \item Multiple scattering (class name G4GoudsmitSaundersonMscModel)
      \item Multiple scattering (class name G4WentzelVIModel)
      \item Multiple scattering (class name G4LowEWentzelVIModel)
      \item Single scattering (class name G4eCoulombScatteringModel)
      \item Single scattering (class name G4eSingleCoulombScatteringModel)
      \item Single scattering (class name G4IonCoulombScatteringModel)
    \end{itemize}
\end{itemize}
推荐使用物理容器类来提供参考物理列表（在GEANT4的发布版本的source/physics\_lists/constructors/electromagnetic子目录）
\begin{itemize}
  \item 默认的电磁物理过程，对于所有的例子，通过G4WentzelVIModel和G4eCoulombScatteringModel的结合，以单步限制中的“UseSagety”类型来模拟多次散射，对于小于100MeV的e+-使用G4UrbanMscModel模拟，G4LivermorePhotoElectricModel被用来模拟光电效应，在1MeV以下，有瑞丽散射过程发生。物理过程列表是基于100eV到100TeV，物理过程列表是7位每能量递减（类名称G4EmStandardPhysics）。
  \item 光学EM物理过程提供快速但是精度略低的电子输运过程，这个过程基于“Simple”的多次散射单步限制方法，通过电离过程减少单步限制，此状态下瑞丽散射失效，光电效应使用G4PEEffectFluoModel模型，并且“ApplyCuts”选项生效（类名称G4EmStandardPhysics\_option1）。
  \item 光学EM物理过程提供快速但是精度略低的电子输运过程，这个过程基于“简单”的多次散射单步限制方法，通过电离过程减少单步限制，对于认韧致射G4Generator2BS角度产生器，瑞丽散射失效，光电效应使用G4PEEffectFluoModel（类名称G4EmStandardPhysics\_option2）
  \item 高精度的EM物理过程的模拟基于“UseDistanceToBoundary”多次散射单步限制与所有带电例子使用G4UrbanMscModel，这减少了没中类别的例子的步长宫娥能的finalRange参数，另外一个模型G4KleinNishinaModel适用于康普顿散射，荧光作用生效，原子核停止生效，对于认韧致射G4Generator2BS角度产生器，对于粒子电离作用的G4IonParameterisedLossModel，物理过程列表是20位每能量递减，最低10eV低能限制（类名称 G4EmStandardPhysics\_option3）
  \item 结合了包含单步限制的以“UseSagteyPlus”类型的多次散射高精度EM物理过程，对于所有粒子，通过结合G4WentzelVIModel和G4eCoulombScatteringModel，对于能量小于100MeV的e+-使用G4GoudsmitSaundersonMscModel，RangeFactor = 0.02, Scin = 3，（无误差的步长接近体积边界），降低每种粒子类型步长函数优化的finalRange参数，荧光过程生效，核停止生效，电离模型的精确角度产生器生效，20MeV下使用的G4LowEPComptonModel，1GeV以下使用G4PenelopeGammaConversionModel，对于电子或真电子低于20MeV以下使用G4LowEPComptonModel，低于100keV以下使用G4PenelopeIonisationModel，粒子电离使用G4IonParameterisedLossModel，韧致辐射使用G4Generator2BS角度产生器，物理过程列表是20位每能量递减，（类名称 G4EmStandardPhysics\_option4）
  \item 基于Livermore（利物摩尔）模型的数据库，如电子和伽马射线，瑞丽散射生效，荧光过程生效，核停止生效，电离模型的精确角度产生器生效，粒子电离模型G4IonParameterisedLossModel生效，物理过程列表是20位每能量递减，（类名称G4EmLivermorePhysics）
  \item 极化线性伽马模拟模型基于Livermore（利物摩尔）数据库，如电子和伽马射线（G4EmLivermorePolarizedPhysics）
  \item 基于Livermore（利物摩尔）数据库的模型和康普顿散射的新模型G4LowEPComptonModel，多次散射的新低能模型G4LowEWenzelMscModel（G4EmLowEPPhysics）
  \item Penelope2008模型对于电子，正电子和伽马射线，瑞丽散射生效，荧光过程生效，核停止生效，电离模型精确角度产生器生效，粒子电离使用G4IonParameterisedLossModel，物理过程列表是20位每能量递减，（G4EmPenelopePhysics）
  \item 对于100MeV以下的e+-的多次散射的实验物理，通过G4GoudsmitSaundersonMscModel模拟，并在默认的EM物理过程的顶端执行（G4EmStandardPhysicsGS）
  \item 对于100MeV一下的e+-的多次散射的实验物理，通过结合了G4WentzelVIModel和G4eCoulombScatteringModel的模型，并在默认的EM物理过程的顶端执行（G4EmStandardPhysicsGS）
  \item 以单次散射模型替代多次散射模型的实验物理在默认的EM物理过程的顶端执行，对于所有的轻子和强子，使用G4eCoulombScatteringModel模型；对于粒子，使用G4IonCoulombScatteringModel (G4EmStandardPhysicsSS)
  \item 低能的GEANT4-DNA物理（G4EmDNAPhysics）
  \item 可替换的低能GEANT4-DNA物理构建器（G4EmDNAPhysics \_optionX，X可以从1到7），参考GEANT4-DNA章节。
\end{itemize}

在basic，extended和advanced的例程中有注册这三个物理构建器与构建可以更替的结合选项的例子，这些例子可以在examples/basic,example/extend/electromagnetic,examples/medical,example/advanced,和GEANT4的源程序发布版中找到。

一些\textbf{可选项}可以控制电磁过程，这些可选项可能会通过UI命令或者新的C++交互类G4EmParameters调用。G4EmParameters::Instance()是线程安全的交互，EM参数可以运行在不同线程内，在所有的EM过程间可以分配参数。GEANT4中的G4State \_PreInit 或者 G4State \_Idle 的状态参数可以被修改。注：对于定义EM物理过程的配置，其中的一些EM物理过捡起以默认的配置示例。所以，只能在后面的过程应用修改的参数，这个类有下列公共的方法：

\begin{itemize}
    \item StreamInfo(std::ostream\&)
    \item SetDefaults()
    \item SetLossFluctuations(G4bool)
    \item SetBuildCSDARange(G4bool)
    \item SetLPM(G4bool)
    \item SetSpline(G4bool)
    \item SetUseCutAsFinalRange(G4bool)
    \item SetApplyCuts(G4bool)
    \item SetFluo(G4bool val)
    \item SetBeardenFluoDir(G4bool val)
    \item SetAuger(G4bool val)
    \item SetAugerCascade(G4bool val)
    \item SetPixe(G4bool val)
    \item SetDeexcitationIgnoreCut(G4bool val)
    \item SetLateralDisplacement(G4bool val)
    \item SetLateralDisplacementAlg96(G4bool val)
    \item SetMuHadLateralDisplacement(G4bool val)
    \item SetLatDisplacementBeyondBoundary(G4bool val)
    \item ActivateAngularGeneratorForIonisation(G4bool val)
    \item SetUseMottCorrection(G4bool val)
    \item SetIntegral(G4bool val)
    \item SetBirksActive(G4bool val)
    \item SetDNAFast(G4bool val)
    \item SetDNAStationary(G4bool val)
    \item SetDNAElectronMsc(G4bool val)
    \item SetEmSaturation(G4EmSaturation*)
    \item SetMinSubRange(G4double)
    \item SetMinEnergy(G4double)
    \item SetMaxEnergy(G4double)
    \item SetMaxEnergyForCSDARange(G4double)
    \item SetLowestEnergy(G4double)
    \item SetLowestMuHadEnergy(G4double)
    \item SetLowestTripletEnergy(G4double)
    \item SetLinearLossLimit(G4double)
    \item SetBremsstrahlungTh(G4double)
    \item SetLambdaFactor(G4double)
    \item SetFactorForAngleLimit(G4double)
    \item SetMscThetaLimit(G4double)
    \item SetMscRangeFactor(G4double)
    \item SetMscMuHadRangeFactor(G4double)
    \item SetMscGeomFactor(G4double)
    \item SetMscSkin(G4double)
    \item SetScreeningFactor(G4double)
    \item SetStepFunction(G4double, G4double)
    \item SetStepFunctionMuHad(G4double, G4double)
    \item SetNumberOfBins(G4int)
    \item SetNumberOfBinsPerDecade(G4int)
    \item SetVerbose(G4int)
    \item SetWorkerVerbose(G4int)
    \item SetMscStepLimitType(G4MscStepLimitType val)
    \item SetMscMuHadStepLimitType(G4MscStepLimitType val)
    \item SetNuclearFormFactorType(G4NuclearFormFactorType val)
    \item SetPIXECrossSectionModel(const G4String\&)
    \item SetPIXEElectronCrossSectionModel(const G4String\&)
    \item AddPAIModel(const G4String\& particle, const G4String\& region, const G4String\& type)
    \item AddMicroElecModel(const G4String\& region)
    \item AddDNA(const G4String\& region, const G4String\& type)
    \item AddMsc(const G4String\& region, const G4String\& physics\_type)
    \item AddPhysics(const G4String\& region, const G4String\& physics\_type)
    \item SetSubCutoff(G4bool, const G4String\& region)
    \item SetDeexActiveRegion(const G4String\& region, G4bool, G4bool, G4bool)
    \item SetProcessBiasingFactor(const G4String\& process, G4double, G4bool)
    \item ActivateForcedInteraction(const G4String\& process, const G4String\& region, G4double, G4bool)
    \item ActivateSecondaryBiasing(const G4String\& process, const G4String\& region, G4double, G4double)
\end{itemize}

以前的交互类 G4EmProcessOptions仍然是有效的，但是，还是强烈建议用户不要使用以前的交互类G4EmProcessOptions。这个交互类将在下一个主的发行版本的去掉。

对应的UI命名可以链接到UI的次级牡蛎"/process/eLoss"，"/prcess/em"，和"/process/msc"。下列允许通过多次散射的单步限制的类型：

\begin{itemize}
  \item fSimple-简化单步限制（使用物理列表 \_EMV和\_EMX）
  \item fUseSafety-默认
  \item fUseDistanceToBounbary-在EM的例子中，单步限制的高级方法，需要的参数shin>0，应该被用在没有磁场的设置应用里。
  \item fUseSafePlus-高级的方法可以银行用在磁场野。
\end{itemize}

G4EmCalculator 是一个类，这个类提供一个界面与阻止力的接口。这个类在提供已经初始化（G4State\_Idle）物理列表后的用户代码的任何地方使用，G4EmCaculator 已经“获取”很多可以应用到已经建立到物理列表中材料的方法，同时“计算”的方法可以被应用到定义在应用或者当前的GEANT4内部数据库的材料。这些类的公共方法是：

\begin{itemize}
\item GetDEDX(kinEnergy,particle,material,G4Region region=0)
\item GetRangeFromRestrictedDEDX(kinEnergy,particle,material,G4Region* region=0)
\item GetCSDARange(kinEnergy,particle,material,G4Region* region=0)
\item GetRange(kinEnergy,particle,material,G4Region* region=0)
\item GetKinEnergy(range,particle,material,G4Region* region=0)
\item GetCrossSectionPerVolume(kinEnergy,particle,material,G4Region* region=0)
\item GetShellIonisationCrossSectionPerAtom(particle,Z,shell,kinEnergy)
\item GetMeanFreePath(kinEnergy,particle,material,G4Region* region=0)
\item PrintDEDXTable(particle)
\item PrintRangeTable(particle)
\item PrintInverseRangeTable(particle)
\item ComputeDEDX(kinEnergy,particle,process,material,cut=DBL\_MAX)
\item ComputeElectronicDEDX(kinEnergy,particle,material,cut=DBL\_MAX)
\item ComputeNuclearDEDX(kinEnergy,particle,material,cut=DBL\_MAX)
\item ComputeTotalDEDX(kinEnergy,particle,material,cut=DBL\_MAX)
\item ComputeCrossSectionPerVolume(kinEnergy,particle,process,material,cut=0)
\item ComputeCrossSectionPerAtom(kinEnergy,particle,process,Z,A,cut=0)
\item ComputeGammaAttenuationLength(kinEnergy,material)
\item ComputeShellIonisationCrossSectionPerAtom(particle,Z,shell,kinEnergy)
\item ComputeMeanFreePath(kinEnergy,particle,process,material,cut=0)
\item ComputeEnergyCutFromRangeCut(range,particle,material)
\item FindParticle(const G4String\&)
\item FindIon(G4int Z, G4int A)
\item FindMaterial(const G4String\&)
\item FindRegion(const G4String\&)
\item FindCouple(const G4Material*, const G4Region* region=0)
\item SetVerbose(G4int)
\end{itemize}

这些交互类，例子，材料，或者过程可能以他们的指针或者字符可能是它们的名字。

\subsubsection*{低能电磁库}
物理的相互作用可以通过以一个可执行物理模型的类，模型类来描述。下述是在GEANT4中可以运行的低能电磁物理模型的总结。有关进一步更详细的信息，请参照GEANT4低能电磁物理工作组的网页，可以从GEANT4网站上转到，“我们是睡”章节，然后选择“工作组”。

这些模型的物理内容以文件形式写在\href{http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/PhysicsReferenceManual/html/PhysicsReferenceManual.html}{ Physics Reference Manual}内。这些模型是基于Livermore数据库，和ICRU73号数据表或者Penelope2008 Monte Carlo程序。他们采用与“标准”GEANT4电磁模型同样的软件设计。

注册低能电磁模型的物理构建器的例子在extended examples内（在GEANT4的源程序发行版中的examples/extended/electromagnetic 和examples/extended/medical），Advanced examples (在GEANT4的源程序发行版中的examples/advanced)描述了这些过程的实例。上述两者皆作为GEANT4发行版的一部分。

\subsubsection*{产物截断}
切记：次级产物的界面与范围界面一样特殊，对于次级伽马，电子，正电子，强子产物，它可以在初始化时间转换到能量阈值。对与所有的反冲粒子，强子截断值可以通过弹性散射应用。

GEANT4参考物理列表中，范围截断值值默认设置为0.7mm。这个值在用户物理列表或者UI命令行中指定可选的SetCut()方法的值。例如，设置截断值到10毫米，可以通过使用：

\begin{lstlisting}[numbers=none]
/run/setCut 0.01 mm
\end{lstlisting}

或者，可以指定粒子类型的截断值值：
\begin{lstlisting}[numbers=none]
/run/setCutForAGivenParticle e- 0.01 mm
\end{lstlisting}

如果指定一个能量低于990eV的范围截断值，能量截断值仍然设置为990eV。为了降低这个值（例如，降低到250eV，为了模拟低能发射线的荧光谱），可以在使用“/run/initialize”命令之前使用如下的UI命令：

\begin{lstlisting}[numbers=none]
/cuts/setLowEdge 250 eV
\end{lstlisting}

或者用替代方法，直接在物理用户物理列表中指定，例如，在可选的SetCuts()方法中，使用：
\begin{lstlisting}[numbers=none]
G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(250 * eV, 1 * GeV);
\end{lstlisting}

可以通过一个有效的命令来使对于荧光或者角度电子产物的使用失效：
\begin{lstlisting}
/process/em/deexcitationIgnoreCut true
\end{lstlisting}

\subsubsection*{角度产生器}
对于EM的部分过程，可以将次级能量与方向的输出抽样因子化。使用基于SetAngularDistribution(G4VEmAngularDistribution * ) 的交互类G4VEmModel可以代替模型中默认的角度产生器。在标准的低能次级包内，角度产生器依据如下相同的简单交互类。

对于光电模型，可以使用如下几个角度产生器：
\begin{itemize}
  \item G4SauterGavrilaAngularDistribution (默认);
  \item G4PhotoElectricAngularGeneratorSauterGavrila;
  \item G4PhotoElectricAngularGeneratorPolarized
\end{itemize}

对于韧致辐射模型，可以使用如下几个角度产生器：
\begin{itemize}
    \item G4DipBustGenerator (默认);
    \item G4ModifiedTsai;
    \item G4Generator2BS;
    \item G4Generator2BN;
    \item G4PenelopeBremsstrahlungAngular.
\end{itemize}

对于电离模型，可以使用一个新的角度产生器：
\begin{itemize}
  \item G4DeltaAngle
\end{itemize}

\subsubsection*{电磁次级偏移}
在相互作用中新建超过一个次级反应是有意义的。例如，电子碰撞在医用直线加速器的靶上，通过韧致辐射产生光子。韧致辐射发射方向的方差减小技巧包括从期望的方向选择N个光子，并且分配每一个光子1/N的比重。

同样的，如此次级反应是不重要的，用户可以通过减少1/N的存在可能性来禁止次级反应。存在的比重通过设置因子N来增加。这个源自俄罗斯轮盘概率模型。

就轫致辐射发射粒子，或者上述1，或者俄罗斯轮盘概率模型而言，如果结果产生的子代粒子的比重低于1/N，偏移技术可以被应用。

通过宏命令，这些技术可以在GEANT4电磁反应中应用

\begin{lstlisting}[numbers=none]
/process/em/setSecBiasing processName Region factor energyLimit energyUnit
\end{lstlisting}

注：processName是需要应用偏移的物理过程；Region是需要应用偏移的区域；factor是韧致辐射发射因子或者俄罗斯轮盘因子（1/N）的倒数；energyLimit energyUnit 是最高能量的限制值。如果第一个次级反应的能量高于这个限值，将不会有偏移被应用。

例如，
\begin{lstlisting}[numbers=none]
/process/em/setSecBiasing eBrem target 10 100 MeV
\end{lstlisting}

将会导致电子在靶区域经历10次的韧致反应（如果第一个光子取样的能量少于100MeV）

偏移需要对于每个物理过程单独指定。为了从光子的反应到子代电子应用俄罗斯轮盘模型，可以对 phot, compt, conv过程使用宏命令。

参考文献：BEAMnrc Users Manual, D.W.O Rogers, B. Walters, I. Kawrakow. NRCC Report PIRS-0509(A)revL,
可以在此网站上查询\href{http://www.irs.inms.nrc.ca/inms/irs/BEAM/beamhome.html}{http://www.irs.inms.nrc.ca/inms/irs/BEAM/beamhome.html}

\subsubsection*{基于利弗莫尔数据库模型}
\begin{itemize}
  \item 光子模型
        \begin{itemize}
            \item Photo-electric effect (class G4LivermorePhotoElectricModel)
            \item Polarized Photo-electric effect (class G4LivermorePolarizedPhotoElectricModel)
            \item Compton scattering (class G4LivermoreComptonModel)
            \item Compton scattering (class G4LowEPComptonModel)
            \item Polarized Compton scattering (class G4LivermorePolarizedComptonModel)– Rayleigh scattering (class G4LivermoreRayleighModel)
            \item Polarized Rayleigh scattering (class G4LivermorePolarizedRayleighModel)
            \item Gamma conversion (also called pair production, class G4LivermoreGammaConversionModel)
            \item Nuclear gamma conversion (class G4LivermoreNuclearGammaConversionModel)
            \item Radiative correction for pair production (class G4LivermoreGammaConversionModelRC)
            \item Polarized gamma conversion (class G4LivermorePolarizedGammaConversionModel)
        \end{itemize}
   \item 电子模型
        \begin{itemize}
          \item Bremsstrahlung (class G4LivermoreBremsstrahlungModel)
          \item Ionisation and delta ray production (class G4LivermoreIonisationModel)
        \end{itemize}
\end{itemize}

\subsubsection*{基于ICRU73电离模型}
电离和delta射线产生（类G4IonParametrisedLossModel）

这个离子模型使用的数据文件是转化自ICRU73号报告。随后，ICRU73号报告的作者给GEANT4二次计算表，这些表数据可以用于更多的发射离子和靶离子结合的计算。在2015，提供了更新的计算结果。离子停止能的选择的计算方法可应用如下的条件：如果一个发射离子/靶结合出现在数据库中，并且发射能量低于1GeV/核子，使用列表中的数据，否则会应用基于 Bethe-Bloch形式的数据库。对于混合物，如果材料的名称与GEANT4 NIST 数据库中的材料名称相同（例如，G4\_WATER），使用ICRU73 停止能数据。通过材料的原子序数排序，基础的材料数据与相对应的ICRU 73报告中的数据相同。在这种情况下，材料名称可能是独一的。对于包含可使用材料的列表，用户可以参考ICRY 73号报告。

模型需要的数据文件会从用户的代码库中复制。这些文件随着GEANT4发布版一起发布。用户应该设置环境变量G4LEDATA到用户拷贝文件的路径。

这个模型主要和G4ionIonisation一起使用，它的适用性受限制于G4GenericIon粒子。默认情况下此物理过程不使用离子模型，如果要是用，用户必须实例化并且注册：

\begin{lstlisting}[numbers=none]
G4ionIonisation * ionIoni = new G4ionIonisation();
ionIoni -> SetEmModel(new G4IonParametrisedLossModel());
\end{lstlisting}

\subsubsection*{基于Penelope2008数据库模型}
\begin{itemize}
  \item 光子模型
        \begin{itemize}
          \item Compton scattering (class G4PenelopeComptonModel)
          \item Rayleigh scattering (class G4PenelopeRayleighModel)
          \item Gamma conversion (also called pair production, class G4PenelopeGammaConversionModel)
          \item Photo-electric effect (class G4PenelopePhotoElectricModel)
        \end{itemize}
  \item 电子模型
        \begin{itemize}
          \item Bremsstrahlung (class G4PenelopeBremsstrahlungModel)
          \item Ionisation and delta ray production (class G4PenelopeIonisationModel)
        \end{itemize}
  \item 正电子模型
        \begin{itemize}
          \item Bremsstrahlung (class G4PenelopeBremsstrahlungModel)
          \item Ionisation and delta ray production (class G4PenelopeIonisationModel)
          \item Positron annihilation (class G4PenelopeAnnihilationModel)
        \end{itemize}
\end{itemize}

所有的Penelope模型可以应用到最大能量到100GeV，尽管，建议使用这些物理过程不要超过几百MeV。

在Penelope模型中可以使用可选项，允许设置（和检索）模型的冗余信息标志位，即信息的总量会打印在屏幕上。
\begin{itemize}
  \item SetVerbosityLevel(G4int)
  \item GetVerbosityLevel()
\end{itemize}

默认的冗余信息等级为0（即，在屏幕上无文字输出）。默认值应该在通常情况下对于正常的运行使用。高级的信息冗余等级建议仅仅用于测试和去除错误的目的。

对于所有的Penelope物理过程，冗余信息的等级如下所示：
\begin{itemize}
    \item 0 = no printout on the screen (default)
    \item 1 = issue warnings only in the case of energy non-conservation in the final state (should never happen)
    \item 2 = reports full details on the energy budget in the final state
    \item 3 = writes also information on cross section calculation, data file opening and sampling of atoms
    \item 4 = issues messages when entering in methods
\end{itemize}

\subsubsection*{极低能电磁过程（GEANT4-DNA扩展）}
GEANT4低能电磁物理包已经扩展到能量低至几电子伏特来适应在液体水，处于细胞或者亚细胞等级的微米/纳米的环境中，辐射作用的模拟应用。这些过程在持续发展的GEANT4-DNA项目的框架中发展（获取更多信息，请参见在网页上的GEANT4-DNA或者网页上的GEAN4 低能电磁物理工作组。）

GEANT4-DNA物理过程和模型类可以应用于水中（“GE\_WATER”材料）中的电子，质子，强子，阿尔法粒子和他们的带电状态。

\subsection*{电子物理过程和模型}
\begin{itemize}
  \item Elastic scattering:
        \begin{itemize}
          \item  process class is G4DNAElastic
          \item  four alternative model classes are: G4DNAScreenedRutherfordElasticModel or G4DNAChampionElasticModel (default) or G4DNAUeharaScreenedRutherfordElasticModel or G4DNACPA100ElasticModel
        \end{itemize}
  \item Excitation
        \begin{itemize}
          \item process class is G4DNAExcitation
          \item model class is G4DNABornExcitationModel (default) or G4DNAEmfietzoglouExcitationModel or G4DNACPA100ExcitationModel
        \end{itemize}
  \item Ionisation
        \begin{itemize}
          \item process class is G4DNAAttachment
          \item model class is G4DNABornIonisationModel (default) or G4DNAEmfietzoglouIonisationModel or G4DNACPA100IonisationModel
        \end{itemize}
  \item Attachment
        \begin{itemize}
          \item process class is G4DNAAttachment
          \item model class is G4DNAMeltonAttachmentModel
        \end{itemize}
  \item Vibrational excitation
        \begin{itemize}
          \item process class is G4DNAVibExcitation
          \item model class is G4DNASancheExcitationModel
        \end{itemize}
\end{itemize}

\subsection*{光子过程与模型}
\begin{itemize}
  \item Elastic scattering:
        \begin{itemize}
          \item process class is G4DNAElastic
          \item G4DNAIonElasticModel
        \end{itemize}
  \item Excitation
        \begin{itemize}
          \item process class is G4DNAExcitation
          \item two complementary model classes are G4DNAMillerGreenExcitationModel (below 500 keV) and G4DNABornExcitationModel (above)
        \end{itemize}
  \item Ionisation
        \begin{itemize}
          \item process class is G4DNAIonisation
          \item  two complementary model classes are G4DNARuddIonisationModel (below 500 keV) and G4DNABornIonisationModel (above)
        \end{itemize}
  \item Charge decrease
        \begin{itemize}
          \item process class is G4DNAChargeDecrease
          \item model class is G4DNADingfelderChargeDecreaseModel
        \end{itemize}
\end{itemize}

\subsection*{氢物理过程与模型}
\begin{itemize}
\item Elastic scattering :
        \begin{itemize}
        \item process class is G4DNAElastic
        \item G4DNAIonElasticModel
        \end{itemize}
\item Excitation
        \begin{itemize}
        \item process class is G4DNAExcitation
        \item model class is G4DNAMillerGreenExcitationModel
        \end{itemize}
\item Ionisation
        \begin{itemize}
        \item process class is G4DNAIonisation
        \item model class is G4DNARuddIonisationModel
        \end{itemize}
\item Charge increase
        \begin{itemize}
        \item process class is G4DNAChargeIncrease
        \item model class is G4DNADingfelderChargeIncreaseModel
        \end{itemize}
\end{itemize}

\subsection*{氦（中性）物理过程与模型}
\begin{itemize}
\item Elastic scattering :
        \begin{itemize}
        \item process class is G4DNAElastic
        \item G4DNAIonElasticModel
        \end{itemize}
\item Excitation
        \begin{itemize}
        \item process class is G4DNAExcitation
        \item model class is G4DNAMillerGreenExcitationModel
        \end{itemize}
\item Ionisation
        \begin{itemize}
        \item process class is G4DNAIonisation
        \item model class is G4DNARuddIonisationModel
        \end{itemize}
\item Charge increase
        \begin{itemize}
        \item process class is G4DNAChargeIncrease
        \item model class is G4DNADingfelderChargeIncreaseModel
        \end{itemize}
\end{itemize}

Helium+ (ionized once) processes and models
\subsection*{氦+（初次电离）物理过程与模型}
\begin{itemize}
\item Elastic scattering :
        \begin{itemize}
        \item process class is G4DNAElastic
        \item G4DNAIonElasticModel
        \end{itemize}
\item Excitation
        \begin{itemize}
        \item process class is G4DNAExcitation
        \item model class is G4DNAMillerGreenExcitationModel
        \end{itemize}
\item Ionisation
        \begin{itemize}
        \item process class is G4DNAIonisation
        \item model classes is G4DNARuddIonisationModel
        \end{itemize}
\item Charge increase
        \begin{itemize}
        \item process class is G4DNAChargeIncrease
        \item model classes is G4DNADingfelderChargeIncreaseModel
        \end{itemize}
\item Charge decrease
        \begin{itemize}
        \item process class is G4DNAChargeDecrease
        \item model classes is G4DNADingfelderChargeDecreaseModel
        \end{itemize}
\end{itemize}

\subsection*{氦++（二次电离）物理过程与模型}
\begin{itemize}
\item Elastic scattering :
        \begin{itemize}
        \item process class is G4DNAElastic
        \item G4DNAIonElasticModel
        \end{itemize}
\item Excitation
        \begin{itemize}
        \item process class is G4DNAExcitation
        \item model classes is G4DNAMillerGreenExcitationModel
        \end{itemize}
\item Ionisation
        \begin{itemize}
        \item process class is G4DNAIonisation
        \item model classes is G4DNARuddIonisationModel
        \end{itemize}
\item Charge decrease
        \begin{itemize}
        \item process class is G4DNAChargeDecrease
        \item model classes is G4DNADingfelderChargeDecreaseModel
        \end{itemize}
\end{itemize}

\subsection*{Li, Be, B, C, N, O, Si, Fe 物理过程与模型}
\begin{itemize}
\item Ionisation
        \begin{itemize}
        \item process class is G4DNAIonisation
        \item model class is G4DNARuddIonisationExtendedModel
        \end{itemize}
\end{itemize}

在物理列表中注册这些物理过程的例子在G4EmDNAPhysics* 构建器中给出（在GEANT4源程序发布版的source/physics\_lists/constructors/electromagnetic内）。在物理列表的“dnaphysics”扩展例子中，有一个关于使用这些构建起的例子，这些例子解释了如何从GEANT4-DNA物理过程中获取基础信息。

GEANT4-DNA物理构建器在\href{http://geant4-dna.org/}{Geant4-DNA website}。

“微剂量学”扩展例子阐释了如何将GEATN4-DNA过程与标准的电磁过程相结合（结合了不同时期、不同刻度标准的GEANT4电磁物理过程）。

从10.4发布版本之后，有一套GEANT4-DNA模型专用的生物材料。这些模型被命名为G4NDAPTBElasticModel，G4DNAPTBExcitationModel，G4DNAPTBIonisationModel 和G4NDAPTBAugerModel。这些模型可以应用在THF,PY,PU,TMP催化过程与DNA的胞嘧啶、胸腺嘧啶、腺嘌呤、鸟嘌呤材料。G4DNAPTBIonisationModel也可以应用于质子的THF,PY和TMP过程。使用这些过程的例子“icsd”extend例程内。

从GREANT4 10.1版本发行以来，GEANT4-DNA可以同样应用在水辐射分解的建模领域（物理-化学和物理领域）。三个扩展例子，“chem1”，“chem2”，“chem3”和“chem4”阐述了这些。可以从\href{http://geant4-dna.org/}{Geant4-DNA website}。获得更多有用信息。

为了运行GEANT4-NDA扩展包，数据包需要拷贝到用户的代码目录里。这些文件于GEANT4一起发布。用户需要设置G4LEDATA环境变量到数据包拷贝的目录。

关于GEANT4-DNA的所有的出版物的列表可以从\href{http://geant4-dna.org/}{Geant4-DNA website}或者\href{http://geant4.in2p3.fr/spip.php?rubrique12&lang=en/}{ Geant4-DNA website}获取。

\subsection*{原子退激}

G4ANT4中有一个特殊的交互叫做G4VAtomicDeexcitation，这种交互是为了使用标准，低能和非常低能的电磁物理过程的源自退激的模拟。原子退激包含可见荧光与光子，电子和离子（PIEX 粒子诱发 X 射线荧光分析）的俄歇电子发射；更多详细内容参见：
\href{http://dx.doi.org/10.1002/xrs.1301}{A. Mantero et al., PIXE Simulation in Geant4 , X-Ray Spec. , 40, 135-140, 2011.}

这个几乎可以在物理过程中激活而在原子壳中产生空穴。现在，这些物理过程为光电效应，电离和康普顿散射。

\subsection*{原子退激的激活}

在用户的物理列表中的连续过程中激活原子退激过程可以通过下列的G4EmParameters列方法或者通过UI命令：
\begin{lstlisting}[numbers=none]
/process/em/deexcitation region true true  true
/process/em/fluo true
/process/em/auger true
/process/em/pixe true
\end{lstlisting}

用户可以在G4State\_PreInit or G4State\_Idle描述中定义参数。从光子和电子产生的可见荧光默认通过 Option3, Option4, Livermore和Penelope构建器，当俄歇效应产生而不是用于 粒子诱发 X 射线荧光分析。

另外一套由Bearden et al. (1967)提供的数据，这套数据用来建立可见荧光线的模型。这部分数据已经被加入G4LEDATA文件夹内。这套数据可以通过UI命令来选择。
\begin{lstlisting}[numbers=none]
/process/em/fluoBearden true
\end{lstlisting}

另外的一个重要的UI命令可以使所有的俄歇和/或可见荧光输出模拟生效：
\begin{lstlisting}[numbers=none]
/process/em/augerCascade true
/process/em/deexcitationIgnoreCut true
\end{lstlisting}

\subsection*{如何更改电离截面模型？}

用户同事也可以选择使用那个截面模型来计算PIXE的壳反应截面：
\begin{lstlisting}[numbers=none]
/process/em/pixeXSmodel name
/process/em/pixeElecXSmodel name
\end{lstlisting}

根据不同的PIEX反应截面，上述中的name可能是 “Empirical”, “ECPSSR\_FormFactor” 或“ECPSSR\_Analytical”，下面是可以使用的壳反应截面模型： 源自分析计算理论ECPSSR（见 A. Mantero et al., X-Ray Spec.40 (2011) 135-140）的“ECPSSR\_Analytical”模型，这个模型将会在宽范围的能量中重新计算K层和L层反应截面；源自 A. Taborda计算的关于“ECPSSR\_FormFactor”的 值（见A. Taborda et al., X-Ray Spec. 40 (2011) 127-134） ，这个值可以直接得到Form因子，这个因子包含0.1-100MeV能量的K,L层和0.1-10MeV的M层；源自Paul 的“reference values”（对于K层的质子和阿尔法粒子）值的 “empirical”模型，对于 L层Orlic empirical模型（仅仅对于Z>2的质子和电离粒子）。剩下的一个模型为默认的模型。在能量界限范围之外，使用“ECPSSR\_Analytical” 模型。我们建议，如果用户不确定使用那个模型，则使用系统默认的模型。

\subsection*{例子}
\textbf{TestEm5extended/electromagetic}例子讲述了如何使用原子退激（见，对于例子pixe.mac macro）

\subsection*{非常低能的电磁物理过程在单晶硅中微电子的应用（GEANT-MuElec 扩展）}
（以前乘坐为 GEANT4-MuElec）

GEANT4低能电磁物理程序包已经扩展到可以计算在高连接度微电子组分中的电子伏特辐射效应的模拟。

GEANT4-MuElec物理过程和模型类应用于硅中的电子、质子和重离子。

\subsection*{电子物理过程和模型}
\begin{itemize}
  \item Elastic scattering :
        \begin{itemize}
          \item process class is G4MicroElastic
          \item model class is G4MicroElecElasticModel
        \end{itemize}
  \item Ionization
          \begin{itemize}
            \item process class is G4MicroElecInelastic
            \item model class is G4MicroElecInelasticModel
          \end{itemize}
\end{itemize}

\subsection*{质子物理过程与模型}
  \begin{itemize}
    \item Ionization
        \begin{itemize}
          \item process class is G4MicroElecInelastic
          \item model class is G4MicroElecInelasticModel
        \end{itemize}
  \end{itemize}

\subsection*{重离子物理过程与模型}
  \begin{itemize}
    \item Ionization
        \begin{itemize}
          \item process class is G4MicroElecInelastic
          \item model class is G4MicroElecInelasticModel
        \end{itemize}
  \end{itemize}

关于GEAN4-MicroElec的出版物的所有列表，可以直接从\href{https://twiki.cern.ch/twiki/bin/view/Geant4/LoweMuElec}{Geant4-MicroElec website}获得。

\subsection*{澳大利亚，Monash U的新康普顿模型}

一个对于非极性光子的新康普顿散射模型在相对脉冲估计的模型下已经被开发出来。这个开发的模型作为另一个替代的源自于Ribberfors的康普顿散射框架的低能电磁康普顿散射模型（Livermore, Penelope 康普顿模型）。这个模型的类名称为G4LowEPComptonModel。

G4LowEPComptonModel类已经加入到物理构建器G4EmStandardPhysics\_option4之中，这个类包含了源自于标准和低能电磁物理工作组的大多数准确的模型。

\subsection*{多阶段物理过程}
\subsection*{强子影响电离和PIXE}

\textbf{G4hImpactIonisation}物理过程可以应对由强子和阿尔法粒子电离的影响和\textbf{PIXE}所产生的下代粒子（包含X射线发射粒子）。这个物理过程和相关的类可以在source/processes/electromagnetic/pii中找到。

关于这个类与PIXE模拟更详细的文档，可以点击\href{https://www.ge.infn.it/geant4/physics/pixe/index.html}{此处}获取。

关于相关的物理特性细节描述可以下下列文档找那个找到。

\href{http://ieeexplore.ieee.org/document/5341442/}{M. G. Pia et al., PIXE Simulation with Geant4 , IEEE Trans. Nucl. Sci. , vol. 56, no. 6, pp. 3614-3649, 2009.}

相关物理特性的概述可以在GEANT4的\href{http://geant4-userdoc.web.cern.ch/geant4-userdoc/UsersGuides/PhysicsReferenceManual/html/PhysicsReferenceManual.html}{Physics Reference Manual}中找到。

如何使用这个物理过程的粒子如下所示。在GEANT4 高级例程中（见GEANT4安装源程序包中的 examples/advanced/eRosita）可以获取更深入的粒子。

\begin{lstlisting}[numbers=none]
#include "G4hImpactIonisation.hh"
[...]
void eRositaPhysicsList::ConstructProcess()
{
[...]
      theParticleIterator->reset();
       while( ( * theParticleIterator)() )
       {
            G4ParticleDefinition * particle = theParticleIterator->value();
            G4ProcessManager * processManager = particle->GetProcessManager();
            G4String particleName = particle->GetParticleName();

            if (particleName == "proton")
        {
            // Instantiate the G4hImpactIonisation process
            G4hImpactIonisation * hIonisation = new G4hImpactIonisation();

            // Select the cross section models to be applied for K, L and M shell vacancy creation
           // (here the ECPSSR model is selected for K, L and M shell; one can mix and match
           // different models for each shell)
           hIonisation->SetPixeCrossSectionK("ecpssr");
            hIonisation->SetPixeCrossSectionL("ecpssr");
            hIonisation->SetPixeCrossSectionM("ecpssr");

            // Register the process with the processManager associated with protons
            processManager -> AddProcess(hIonisation, -1, 2, 2);
        }
    }
}
\end{lstlisting}

\subsection*{可选择使用的反应截面}
下面的反应截面模型的使用是可选的：
\begin{itemize}
  \item protons
        \begin{itemize}
          \item  K shell
            \begin{itemize}
              \item ecpssr (based on the ECPSSR theory)
              \item ecpssr\_hs (based on the ECPSSR theory, with Hartree-Slater correction)
              \item ecpssr\_ua (based on the ECPSSR theory, with United Atom Hartree-Slater correction)
              \item ecpssr\_he (based on the ECPSSR theory, with high energy correction)
              \item pwba (plane wave Born approximation)
              \item paul (based on the empirical model by Paul and Sacher)
              \item kahoul (based on the empirical model by Kahoul et al.)
            \end{itemize}
          \item  L shell
            \begin{itemize}
              \item ecpssr
              \item ecpssr\_ua
              \item pwba
              \item miyagawa (based on the empirical model by Miyagawa et al.)
              \item orlic (based on the empirical model by Orlic et al.)
              \item sow (based on the empirical model by Sow et al.)
            \end{itemize}
          \item  M shell
            \begin{itemize}
              \item ecpssr
              \item pwba
            \end{itemize}
        \end{itemize}
  \item alpha particles
    \begin{itemize}
      \item K shell
        \begin{itemize}
          \item ecpssr
          \item ecpssr\_hs
          \item pwba
          \item paul (based on the empirical model by Paul and Bolik)
        \end{itemize}
      \item L shell
        \begin{itemize}
          \item ecpssr
          \item pwba
        \end{itemize}
      \item M shell
        \begin{itemize}
          \item ecpssr
          \item pwba
        \end{itemize}
    \end{itemize}
\end{itemize}

\subsection*{PIXE 数据库}

G4hImpactIonisation 物理过程使用\textbf{PIXE 数据库}

PIXE数据库随着GEANT4 \textbf{G4PII}数据包一起发布，这个\href{http://geant4.web.cern.ch/geant4/support/download.shtml}{数据库}必须随着GEANT4的源代码一起下载。

\textbf{G4PIIDATA}环境变量必须被设置到用户系统文件系统的G4PII PIEX数据库文件夹路；例如，如果使用类c壳。

\begin{lstlisting}[numbers=none]
setenv G4PIIDATA path_to_where_G4PII_has_been_downloaded
\end{lstlisting}

关于更详细的PIXE数据库文档可以\href{https://www.ge.infn.it/geant4/physics/pixe/index.html}{单击此处}下载。

\subsection{强子互相作用}
本章节简要的介绍了安装在GEANT4中的强子物理过程。关于GEANT4中的更详细的强子物理相互作用，请参见\href{http://geant4-userdoc.web.cern.ch/geant4-userdoc/UsersGuides/PhysicsReferenceManual/html/PhysicsReferenceManual.html}{ Physics Reference Manual}

\subsection*{反应截面相关}
\subsection*{反应截面数据包}
每一个强子物理过程类（源自G4HadronicProcess）可能由一个或者多个反应截面数据包与它相关。在广义上，条目“数据包”意味着是一个对象，这个对象可以封装对于计算给出的物理过程的总截面方法和数据。方法和数据可以多种多样，行程一个使用硬连线数字的简单的方程应用与使用大数据表格的精确参数化。截面数据包是源自于G4VCrossSectionDataSet的概述，并且需要执行下列的方法：
\begin{lstlisting}[numbers=none]
G4bool IsApplicable( const G4DynamicParticle * , const G4Element * )
\end{lstlisting}

如果数据包被设置用来计算对于给出的粒子和材料的总反应截面，这个方法的返回值为True，其他，则返回False。
\begin{lstlisting}[numbers=none]
G4double GetCrossSection( const G4DynamicParticle * , const G4Element * )
\end{lstlisting}

只要IsApplicable返回的值为True，这个方法将会被调用，并且一定会返回一个反应截面，对于给出的粒子和材料，这个截面的单位为GEANT4的默认单位。
\begin{lstlisting}[numbers=none]
void BuildPhysicsTable( const G4ParticleDefinition& )
\end{lstlisting}

这个方法可能被调用来请求数据包用来重新计算内部数据库或者，在给出的粒子类型的截断参数或者其他参数改变时候，重置这个方法的状态。

\begin{lstlisting}
void DumpPhysicsTable( const G4ParticleDefinition& ) = 0
\end{lstlisting}

对于给出的雷子类型，对于标准输出光谱，这个方法可能被调用来情节数据包用来打印内部数据库和/或其他状态信息。

\subsection*{截面数据存储}
截面数据包被物理过程使用来计算物理相互作用长度。一个给定的反应截面数据包可能仅仅应用与一个特定的能量区间，或者可能仅仅用来计算特定粒子类型的反应截面，如果需要，G4CrossSectionDataStore类已经提供了允许用户来指定一个物理过程一些列的数据包，并且设计数据包的优先顺序来确保在给定的能量范围，粒子，和材料的模型下，使用合适的数据包。它执行下列公共的方法：
\begin{lstlisting}[numbers=none]
G4CrossSectionDataStore()
~G4CrossSectionDataStore()
G4double GetCrossSection( const G4DynamicParticle * , const G4Element * )
\end{lstlisting}

对于给定的粒子和材料，这个方法返回一个在数据存储对象中，由统计反应截面数据包列表中之一给出的反应截面值。如果没有已知的数据包，舍弃G4Exception，并返回DBL\_MIN。否则，数据包列表中的每个数据包都会被查询，相反地，在列表顺序中，通过调用给定粒子和材料的IsApplicable方法。第一个数据包对象响应将会随后被要求返回通过GetCrossSection方法的一个截面值。如果没有数据包响应，舍弃G4Exception，并返回DBL\_MIN。

\begin{lstlisting}[numbers=none]
void AddDataSet( G4VCrossSectionDataSet * aDataSet )
\end{lstlisting}

这个方法可以调用来指示数据存储，这个数据是在给定得粒子类型下，在截断或者其他参数改变的指示。相对应地，数据存储将会调用每一个数据包的BuildPhysicsTable。
\begin{lstlisting}
void DumpPhysicsTable( const G4ParticleDefinition& )
\end{lstlisting}

这个方面可能被用来请求数据存储来调用每一个数据包中的DumpPhysicsTable方法。

\subsection*{默认反应截面}
对于总反应截面数据和计算的默认值已经被封装在独立的类G4HadronCrossSections中。每一个强子过程：G4HadronInelasticProcess,G4HadronElasticProcess, G4HadronFissionProcess, 和 G4HadronCaptureProcess使用的时候已经有一个反应截面数据存储和一个默认的反应截面数据包。数据包对象是一个真实的壳，这个壳调用独立的G4HadronCrossSections类来做真实的计算反应截面的工作。

默认的反应截面可以被用户全部或者部分拒绝使用。在末尾，基础类G4HadronicProcess有一个get方法：

\begin{lstlisting}[numbers=none]
G4CrossSectionDataStore * GetCrossSectionDataStore()
\end{lstlisting}

这个类给出每一个物理过程数据存储的公共接口。用户的反应截面数据包可以依据下列的框架添加到数据存储中：
\begin{lstlisting}[numbers=none]
G4Hadron...Process aProcess(...)

MyCrossSectionDataSet myDataSet(...)

aProcess.GetCrossSectionDataStore()->AddDataSet( &MyDataSet )
\end{lstlisting}

添加的数据包将会覆盖默认的反应截面数据，无路是否通过它的IsApplicable方法来指示。

此外对于get方法，G4HadronicProcess类也有同样的方法

\begin{lstlisting}[numbers=none]
void SetCrossSectionDataStore( G4CrossSectionDataStore * )
\end{lstlisting}

这个类允许用户完全用个新的数据存储来替换默认的数据存储。

此处应该注意一个物理过程不会发送任何他自己与数据存储相关联的信息（和因此数据包）对象。因此，每一个数据包都被设定形成公式来计算一种类型和物理过程中一种类型的反应截面。泪如，这个不会组织不同的数据包来共享公共数据包和/或计算方法，因为就如上述提到的G4HadronCrossSections类一样，让用户免于执行任何种类重要的结构是适宜的。

对于非弹性散射和弹性散射，辐射捕获和裂变，当前的数据包G4HadronCrossSections安装生效将会重新适用总反应界面作为适用\textbf{GHEISHA}来提供对于在给定材料中的指定粒子的相对应独立的平均自由路径提供计算。

\subsection*{低能中子输运的反应截面}
低能中子输运的反应截面在一套的文件中，这套文件在时间零时候与相对应的数据包一起读取。因此，为了允许高效的粒度数据访问而适用系统文件。反应截面路径结构的“root”目录通过环境变量与数据链接，用户可以设置G4NEUTRONHPDATA。链接总反应截面的类的单独的过程，例如，对于低能种子输运反应截面数据设置类是areG4NeutronHPElasticData，G4NeutronHPCaptureData，G4NeutronHPFissionData和G4NeutronHPInelasticData。

对于低能种子总反应截面的详细描述，用户可以通过上述所描述的方式结合相关种子相互作用的物理过程的束数据存储进行注册。

使用这些种子截面数据类可以不需要使用neutron\_hp模型。用户决定了对于用户自己特定的模型，这样的类是否需要使用。

种子反应截面压缩版本的原始是源自HP数据库，这个数据库提供了新类 G4NeutronHPElasticData, G4NeutronCaptureXS,G4NeutronElasticXS,和G4NeutronInelasticXS。

\subsection*{低能带电粒子输运反应截面}
低能带电粒子输运反应截面被集成为一套文件，与低能中子输运在相同的时间，这套文件在初始化的时候读入。反应截面路径结构的“root”目录通过环境变量与数据链接，用户可以设置G4PARTICLEHPDATA。这个环境变量指向低能带电粒子数据安装的路径，例如，GEANT4 10.3发行版中的 G4TENDL1.3（这部分数据不会从GEANT4网站上自动下载，例如，它必须被用户手动下载）：

export G4PARTICLEHPDATA=/your/path/G4TENDL1.3/.

\$G4PARTICLEHPDATA预期有下面的五个二级文件夹，与带电粒子相同，这些可以通过低能带电粒子输运来运行：Proton/, Deuteron/,Triton/, He3/, Alpha/。用户可以通过独立的环境变量来指向每一种粒子类型的客户数据库来复写默认的文件夹结构。但是这些被作为高级/专家方面的用户特性。这些目录通过如下的环境变量设置： G4PROTONHPDATA,对于proton;G4DEUTERONHPDATA,对于deuteron; G4TRITONHPDATA,对于triton; G4HE3HPDATA, 对于He3; G4ALPHAHPDATA,对于alpha.

如果这些数据库中的任何一个定义不清楚，例如，G4TRITONHPDATA，然后相关的数据库会被认为是 \$G4PARTICLEHPDATA/的一个次级文件夹子，例如 \$G4PARTICLEHPDATA/Triton/。如果所有的环境变量都被设置，G4PARTICLEHPDATA环境变量不需要被单独指定。尽管它被设置，这个设定将会被忽略（因为每单个粒子会采用优先的环境变量设置。）

\subsection*{强子静止}
\subsection*{执行“强子静止”物理过程列表}
下列的物理过程类可以被执行：
\begin{itemize}
  \item  pi-, K-, sigma-, xi-, omega- absorption (class name G4HadronicAbsorptionBertini)
  \item  neutron capture (class name G4HadronCaptureProcess)
  \item anti-proton, anti-sigma+, anti-deuteron, anti-triton, anti-alpha, anti-He3 annihilation (class name G4HadronicAbsorptionFritiof)
  \item mu- capture (class name G4MuonMinusCapture)
\end{itemize}

捕获低能带负电的粒子是一个复杂的物理过程，这个过程包含了介子，X射线束和俄歇电子束，原子核反应的形成过程。就mu-而言，也有从介子的K层衰减而获得的可能性。执行这个物理过程需要使用一个基础的过程类G4HadronicStoppingProcess。

对于中子，GEANT4提供能量低至热中子的模拟。中子俘获截面随着能量的减少整体上呈增加趋势，同时伴随着原子共振。在GEANT4中子俘获反应截面通过使用ENDF数据库来参数化。

\subsection*{中子飞行}
\subsection*{你需要什么样子的物理过程？}

对于运动的强子，有四个物理过程类。表\hyperref{qiangziguochengyuxiangguanlizi}列出来与每个物理过程相关的粒子。
\begin{table}[H]
\centering
\caption{强子过程与相关粒子}\label{qiangziguochengyuxiangguanlizi}
\begin{tabular}{|l|p{11cm}|}
\hline
G4HadronElasticProcess&pi+, pi-, K + , K 0 S , K 0 L , K - , p, p-bar, n, n-bar, lambda, lambda-bar,Sigma + , Sigma - , Sigma + -bar, Sigma - -bar, Xi 0 , Xi - , Xi 0 -bar, Xi - -bar\\
\hline
G4HadronInelasticProcess&pi+, pi-, K + , K 0 S , K 0 L , K - , p, p-bar, n, n-bar, lambda, lambda-bar,Sigma + , Sigma - , Sigma + -bar, Sigma - -bar, Xi 0 , Xi - , Xi 0 -bar, Xi - -bar\\
\hline
G4HadronFissionProcess&all\\
\hline
G4CaptureProcess&n, n-bar\\
\hline
\end{tabular}
\end{table}

\subsection*{如何注册模型}
注册一个粒子，一个质子的非弹性碰撞模型例子，首先将获得的指针指向粒子过程管理类：
\begin{lstlisting}[numbers=none]
G4ParticleDefinition * theProton = G4Proton::ProtonDefinition();
G4ProcessManager * theProtonProcMan = theProton->GetProcessManager();
\end{lstlisting}

创建一个非弹性碰撞的物理过程的例子：
\begin{lstlisting}[numbers=none]
G4ProtonInelasticProcess * theProtonIEProc = new G4ProtonInelasticProcess();
\end{lstlisting}

创建一个在互相作用中决定次级粒子产生，计算粒子的动量的例子，例如Bertini束模型：
\begin{lstlisting}[numbers=none]
G4CascadeInterface * theProtonIE = new G4CascadeInterface();
\end{lstlisting}

注册粒子非弹性碰撞物理过程模型：

\begin{lstlisting}[numbers=none]
theProtonIEProc->RegisterMe( theProtonIE );
\end{lstlisting}

最后，添加粒子非弹性碰撞过程到离散物理过程列表：

\begin{lstlisting}[numbers=none]
theProtonProcMan->AddDiscreteProcess( theProtonIEProc );
\end{lstlisting}

粒子的非弹性物理过程类，在上述的描述中G4ProtonInelasticProcess类，源自G4HadronicInelasticProcess类，这个物理过程仅仅定义物理过程名称与调用G4HadronicInelasticProcess构建器。所有的特定粒子的非弹性碰撞物理过程源自于G4HadronicInelasticProcess类，这个类调用PostStepDoIt功能，将会从G4HadronicProcess功能的GeneralPostStepDoIt返回粒子变更的对象。这个类也会获得平均自由程，建立物理表，获取微观反应截面。G4HadronicInelasticProcess是源自于G4HadronicProcess类，这个是顶层的强子物理过程类。G4HadronicProcess类源自于G4VDiscreteProcess类。非弹性碰撞，弹性碰撞，俘获核裂变物理过程源自于G4HadronicProcess类。这个纯虚类也提供能量范围管理队形核RegisterMe链接功能。

在飞行，最后状态的强子模型，直接或者间接源自于G4InelasticInteraction类，因为纯虚功能ApplyYourself在这里未定义，这个类是基础类的一个抽象。G4InelasticInteraction它自己是源自于G4HadronicInteraction抽象基类。这个类是所有模型类的基类。它按照能量将模型分类，同时提供类的实用。G4HadronicInteraction提供了 Set/GetMinEnergy和 Set/GetMaxEnergy 功能，这两个类决定了对于模型最小和最大的能量范围。可以设定特殊元素、特殊材料、或者通用应用的能量范围：
\begin{lstlisting}[numbers=none]
void SetMinEnergy( G4double anEnergy, G4Element * anElement )
void SetMinEnergy( G4double anEnergy, G4Material * aMaterial )
void SetMinEnergy( const G4double anEnergy )
void SetMaxEnergy( G4double anEnergy, G4Element * anElement )
void SetMaxEnergy( G4double anEnergy, G4Material * aMaterial )
void SetMaxEnergy( const G4double anEnergy )
\end{lstlisting}

\subsection*{有哪些模型，模型的模型是哪些}
在GEANT4中，在不需要执行一个特殊的交互，或者批处理，任何模型可以和其他模型一起运行。对于不同的模型可应用的范围在初始化时间被设置。这样，以连贯的方式，高专一的模型（仅仅对于一种材料或者粒子生效，并且在一个严格的能量范围之内应用）可以于更多概述的代码应对相同的应用。

每一个模型都会有一个本征的应用范围，选择模拟的模型是非常基于使用目的。因此，没有“默认”的模型。但是，物理列表提供指定的许多模型来适应多种目的。

两种类型的强子稀疏射线模型已经被执行:数据趋向模型和理论趋向模型。
\begin{itemize}
  \item 数据趋向模型对于在物质中低能中子的输运的例子在次级路径hadronics/models/neutron\_hp下。建模是基于\textbf{ENDF/B-VI}的数据格式，并且所有的发布版都执行这种标准的数据格式。所使用的数据集是选择自可以确认这些标准格式的数据库。使用文件系统来运行粒状链接到对于不同的核素的使用反应截面和道址。覆盖这些模型的能量从热中子到20MeV。
  \item 理论趋向模型对于第一次执行非弹性散射是可行的。包含了全能量区间的LHC试验。这个模型文件位于次级文件夹hadronics/models/generator下。当前的体系提示了部分子串模型在高能区间的使用，在中能区域核内的输运模型的使用，退激效应在统计分解模型中的使用。
\end{itemize}

\subsection*{高精度中子相互作用（NeutronHP）}
中子模型在预测中子（和其他粒子）的核反应截面满足合理精度时可能会失败（有时候是灾难性的）。对于这种原因，在蒙特卡洛模拟中与所有的物理控制量相关的额精确模型需要有一个数据库基础，这些数据库包含，理论上地：

\begin{itemize}
    \item cross sections
    \item angular distributions of the emitted particles
    \item energy spectra of the emitted particles
    \item energy-angle correlated spectrum (double-differential cross sections, DDX)
    \item neutrons per fission
    \item fission spectra
    \item fission product yields
    \item photo production data
\end{itemize}

对于包含中子反应的例子，这样的数据库称作“evaluated data”，就意义而言，他们对于不同的数量包含推荐的值，这些值基于实验物理学数据出版物和理论计算的预测，但是这个值可能与可用的实验数据检测不同（例如，积分和微分实验）。可用信息对于每个核素可能都不同，没对不同核素，可用信息可能不完整或者缺失。

GEANT4中的G4NeutronHP包允许以G4NDL格式来使用估计核素数据库。GEANT4用户应该知道任何调用中子能量低于20MeV的模拟并且不适用G4NeutronHP包都可能导致不可靠的结果输出。因此，鼓励GEANT4用户使用G4NeutronHP包，尽管需要注意使用估计核素数据库的限制。

在GEANT4应用的物理列表中，有一个例子解释了如何使用G4NeutronHP包，这个例子所在的路径（在GEANT4的发布版中）extended/radioactivedecay/rdecay02。三个不同的物理过程包含在这个李子中：弹性碰撞，捕获和非弹性碰撞。在G4NeutronHP包含所有的反应处理弹性碰撞，捕获和裂变，所以裂变应该包含在物理列表中，如果需要，它将会以与其他结构相同的树形结构执行。

G4NeutronHP包必须和估计核素数据包库仪器使用。这个数据包和GEANT4刻度（\href{http://geant4.web.cern.ch/geant4/support/download.shtml}{http://geant4.web.cern.ch/geant4/support/download.shtml}）一起发布，同时这个数据可以从IAEA核素数据网站（\href{https://www-nds.iaea.org/geant4/}{https://www-nds.iaea.org/geant4/}）中找到，在IAEA的网站上，这个数据包有更大的一套不同库，包含核素Z>92的数据。

结合合理的物理列表的安装，在与低能中子输运相关的蒙特卡洛模拟中，用户必须很细致的定义材料。相比于其他的种类的模拟，物质成分的核素组成将会构成不同的材料，这将会强烈影响获得的模拟结果。应为如此，建议定义特别的模拟中的每一个核素组成需要特别细心，就想GEANT4用户手册中描述的一样。基本上，如果使用自然的元素组成的物质，这样的练习不是强制的。因为GEANT4的数据库中包含一些自然的常用元素和物质。但是，通过明确的定义这些物质，可以避免一些预期之外的问题，同时，可以实现更好的模拟控制。

强烈建设或强制在使用UNIX时候，按照下列的方式设置GEANT4应用的环境变量：

\textbf{G4NEUTRONHPDATA}[指向G4NDL格式数据库]（强制）。

\textbf{G4NEUTRONHP\_SKIP\_MISSING\_ISOTOPES=1}设置到0，中子数据库中不出现元素的反应截面。如果GEANT4没有找到核素，它就会找到元素的自然组成数据库。仅仅在元素没有找到时候，反应截面设置为0。相反地，如果没有定义环境变量，GEANT4会在中子数据中找相邻地Z和A地元素，这个核素地元素特性可能与设定地核素特性完成不同，并且导致不正确的结果（强烈推荐）。

\textbf{G4NEUTRONHP\_DO\_NOT\_ADJUST\_FINAL\_STATE=1}如果这个变量没有设定，GEANT4模型尝试一些核反应的能量和动量守恒，它通过产生人工γ射线。通过设置这样一个变量，用户可以修正工作，同时基于ENDF-6数据库得到修正结果。及时能量和动量守恒是必须的，在所有的例子下，ENDF-6库也不会提供必要的关联关系在次级粒子之间来满足守恒。另一方面，本质上，ENDF-6库在一些物理过程中违反了能量和动量守恒，并且已经建立了为保留所有的平均量，例如，平均能量释放，平均次级粒子数。。。（强烈推荐）

\textbf{AllowForHeavyElements=} 激活Z>92的核素的物理过程。（推荐）

G4NDL格式数据库是基于ENDF-6格式数据库，它包含估计（例如，推荐）用于输运代码的核素数据。这些数据是必须的与次级粒子产物的能量与角度分布的核素反应截面数据。关于数据如何写入ENDF文件，有一些特性可能会被期待或者不期待出现在蒙特卡洛刻度的结果之中。

关于反应产物的信息可以不完全和/或无关联，在这种情况下，具体描述如下：

\begin{enumerate}
  \item 不完全信息   \newline
   这种反应产物信息应用在没有关顾如何产生一个次级粒子的情况下。作为粒子，没有任何的关于次级质子的能量和角度的信息，仅仅有（n,p）反应的反应截面数据是可能的。在这种情况下GEANT4将会在物质框架的中心各向同性产生质子，携带的能量降低到剩余的核素处于基态。
  \item 无关联信息  \newline
   这种反应产物信息应用当如下情况发生：
   \begin{enumerate}
     \item 反应产物的能量和角度分布没有关联。因此，反应产物可以以非物理能量-角度关系的方式产生。
     \item 在一个确定的反应中，不同的额反应产物的能量-角度分布通常是无关联的。例如，参考一个（n，2p）反应在一个确定的中子能量，两者都会导致0-5MeV能量的范围的质子的产生。在这种情况下，每一个质子的能量和角度将会被以能量和角度参数独立取样，两者的质子将会以戒心5MeV的能量发射的事件存在，两者质子将会以接近0MeV的能量发射的事件存在。因此，能量和角动量守恒将不会从一个事件持续到另外一个事件。但是，平均能量将会被保存，并产生质子能谱将会被修正。
   \end{enumerate}
  \item 相关联反应  \newline
  有一些粒子关于一些核反应能被合为一体，好像他们是一个单一的反应一样（MT=5反应，在ENDF-6格式的名称内）。在这些粒子中，信息包含在反应截面中，这些信息是他们的综合，加上反应产物产额核每个次级粒子的能量-角度分布。这这种情形下，每次反应发生时候，每个次级粒子产生的总量都会被取样，同样对于其他数量的次级粒子的产生将会独立的取样。 \newline
  因此，在这种情况下，能量和角动量或者核子的数量在一个事件和一个事件保存，但是总量是以平均数保存。因此，减少剩余的核子的产生也是没有可能的，所以没有可用的信息是关于特殊的核反应发生的。据说，某时候ENDF数据库将剩余核素作为开放的粒子。但是，现在GEANT4不会管理哪些信息。在高于20MeV能量的中子数据库中，这种情形是非常不正常的。但是，在低于20MeV的带电粒子数据库或者在高于20MeV的中子数据苦衷，这种情况是很常见的。
\end{enumerate}

作为上述的所陈述内容的总结，一些通用的特性可以被期待作为运行G4NeutronHP包的蒙特卡洛刻度的结果：
\begin{itemize}
  \item 中子输运，这以为这中子在碰撞中如何损失能量，何时和怎么样能量被吸收。。。是十分可信的。因为ENDF中子库的主要目的是运行这个中子输运。
  \item 由于诱发产生中子核反应的中子产物通常是可信的，在相同的核反应中，在没有能量-角度修正之后，一些中子将产生。
  \item 关于带电粒子产生的结果必须经常被确认。在使用ENDF格式数据库中的查找可以指示哪些结果是可信的，哪些结果是不可信的。这些可以通过，例如在\href{ http://t2.lanl.gov/nis/data.html}{ http://t2.lanl.gov/nis/data.html}或者其他网站里查找。
  \item 关于产生γ射线的产物也应该必须经常被确认。例如，在中子捕获过程中，对于所有的核子，反应发射的γ射线的数量和能量是不完全的，经常无关联的。当信息是有用时，它将会被使用，但是用户可以获取结果，这个结果可能与事件到事件的真实性比较远：在很多的情形下，射线束的总能量不会被修正，只有一些存储在中子数据库中的特别的γ射线会发射。如果没有这些γ射线的相关信息，GEANT4将会使用一个简单的模型来替换与大体上丢失的光谱信息。关于剩余核子产生的信息（例如，在激发计算中）通常是可信的，上述描述的除了MT\=5的库之外的反应。（无相关）
\end{itemize}

作为概述的总结，用户应该经常的仔细关注结果获取部分的蒙特卡洛模拟代码，同时，这也会应用在GEANT4中。他们必须遇见哪些可以被信任的结果和哪些需要被确认的结果。对于在ENDF格式数据库中，仔细观察重要的估计核数据的特殊例子将允许检查对于一些特殊的核素核确定的反应，在一个确定的数据库哪些信息是有用的。有一些公共的和数据地址链接如\href{ http://t2.lanl.gov/nis/data.html}{ http://t2.lanl.gov/nis/data.html}

关于低能中子的输运（低于5MeV），在运行时，必须使用热中子数据库。在这个能量范围中，在原子中的核子组成材料中（晶体，液体，塑料。。。）确定分子的一部分是非常重要的，因为可能在中子之间有动量的转移，而且针对所有结构的材料，不仅仅是核子之间。这对于材料的使用作为中子调制器是非常重要的。例如，有低A（质量数）的材料被用来在一些很少的碰撞中衰减中子能量。因为，在材料中，特性是与核子有管，例如，对于聚乙烯中的氢元素，需要使用不同的热中子数据库，对于水中的氢元素也相同。

如果要模拟与这些能量相关的中子碰撞，如果可行，对于这些材料的热中子数据库可以使用。如果没有相关的模拟，那么从模拟中获取的低于5eV的中子能量范围的结果是不可信的，尤其在模拟中使用低质量的元素时候。

为了使用热中子库，下列的代码行应该被包含在物理列表中：
\begin{lstlisting}[numbers=none]
G4HadronElasticProcess * theNeutronElasticProcess = new G4HadronElasticProcess;
// Cross Section Data set
G4NeutronHPElasticData * theHPElasticData = new G4NeutronHPElasticData;
theNeutronElasticProcess->AddDataSet(theHPElasticData);
G4NeutronHPThermalScatteringData * theHPThermalScatteringData = new G4NeutronHPThermalScatteringData;
theNeutronElasticProcess->AddDataSet(theHPThermalScatteringData);
// Models
G4NeutronHPElastic * theNeutronElasticModel = new G4NeutronHPElastic;
theNeutronElasticModel->SetMinEnergy(4.0 * eV);
theNeutronElasticProcess->RegisterMe(theNeutronElasticModel);
G4NeutronHPThermalScattering * theNeutronThermalElasticModel = new G4NeutronHPThermalScattering;
theNeutronThermalElasticModel->SetMaxEnergy(4.0 * eV);
theNeutronElasticProcess->RegisterMe(theNeutronThermalElasticModel);
// Apply Processes to Process Manager of Neutron
G4ProcessManager * pmanager = G4Neutron::Neutron()->GetProcessManager();
pmanager->AddDiscreteProcess(theNeutronElasticProcess);
\end{lstlisting}

同时，需要将材料定义为一个特殊的名字，例如，对于水中的氢元素使用热中子数据库，物质水应该被定义为：

\begin{lstlisting}[numbers=none]
G4Element * elTSHW = new G4Element("TS_H_of_Water", "H_WATER", 1.0, 1.0079 * g/mole);
G4Material * matH2O_TS = new G4Material("Water_TS", density=1.0 * g/cm3, ncomponents=2);
matH2O_TS->AddElement(elTSHW,natoms=2);
matH2O_TS->AddElement(elO,natoms=1);
\end{lstlisting}

上述非常重要的是\textbf{"TS\_H\_of\_Water"},对于使用G4NeutronHP是一个很特殊的名字。为了确认哪一个热中子数据库是可用的，他们可以在 G4NDL4.0/ThermalScattering文件夹内找到（或者等同于，对于其他的中子数据库）。然后，用户可以在源文件G4NeutronHPThermalScatteringNames.cc中查找，在路径下 source/processes/hadronic/models/neutron\_hp/src下。有一些行与下面相似：
\begin{lstlisting}[numbers=none]
names.insert(std::pair<G4String,G4String>("TS_H_of_Water", "h_water"));
\end{lstlisting}

上述的\textbf{"TS\_H\_of\_Water"}意味着水中的氢元素，与\textbf{"TS\_H\_of\_Water"}相似的，例如\textbf{“TS\_C\_of\_Graphite”} 或者\textbf{“TS\_C\_of\_Graphite”}可以以上述相同的方式找到并使用。

\subsection*{高精度带电粒子相互作用（ParticleHP）}
由于在ParticleHP中结合了中子和带电粒子的配置，对于所有的粒子，不建议使用物理的管带你。贯穿所有测试的连续的配置将会有希望在下一个发布版中实现。对于现在的情况，为了提供初级带电粒子的物理运行，下列的环境变量应该被设置：
\begin{lstlisting}[numbers=none]
export DO_NOT_SET_PHP_AS_HP=1
\end{lstlisting}

注意这个环境变量为一个仅仅在汇编时候使用的配置选项，不会在实时运行中加载，同时它会同时影响初级中子和带电粒子。程序中不期望对于中子的行为进行巨大的更改。

对于进一步提高带电粒子的发射，在实时的运行中，也建议使用如下的环境变量：
\begin{lstlisting}[numbers=none]
export G4PHP_DO_NOT_ADJUST_FINAL_STATE=1
\end{lstlisting}

这将要避免对于最终状态的默认调试以确保更好的守恒法则（对于带电，能量，动量，量子数）。

对于最终状态的调试，就中子反应而言，建议为真实的探测器响应。对于使用目的的反应物理和剂量学，\textbf{平均量}是非常重要的来提高精度，而不是最终的调试。（例如，设置上述的环境变量）。

注意，对于实时运行状态，设置G4PHP\_DO\_NOT\_ADJUST\_FINAL\_STATE会影响初级中子和带电粒子，所以必须注意使用感兴趣的变量。总之：如果使用对于初级中子使用ParticleHP，最安全的方式是使用默认设置；在编译ParticleHP库的时候，设置DO\_NOT\_SET\_PHP\_AS\_HP是没有坏处的；但是，若要设置 G4PHP\_DO\_NOT\_ADJUST\_FINAL\_STATE则必须小心谨慎。如果使用ParticleHP对于初级中子和带电粒子，建议编译时使用 DO\_NOT\_SET\_PHP\_AS\_HP设置，然后运行时，使用DO\_NOT\_SET\_PHP\_AS\_HP设置。

\subsection*{切换统计核子退激模型}
在中间能级的核反应（从几MeV到几GeV）是典型的分为两个量级。第一，快反应步骤通过动态的模型描述（量子分子动力学，核内级联，预结合物，等等），然后对于一个或者一些激发的核子产生结果。第二个反应步骤描述了激发核子的退激，它使用通过统计退激模型来执行。两个反应步骤在理论上，模型可以分开选择，但是当前的额GEANT4的强子框架的设计在物理列表级别上很难实现分开选择模型。但是，也有其他的决绝方案。

GEANT4提供了一些核子的退激模型，默认的是 G4ExcitationHandler，这个模型的详细描述在\href{http://geant4-userdoc.web.cern.ch/geant4-userdoc/UsersGuides/PhysicsReferenceManual/fo/PhysicsReferenceManual.pdf}{ Physics Reference Manual}. Bertini-style模型G4CascadeInterface使用内部的退激模型。ABLA V3 模型是可以用的。

对于使用预结合模型和退激模块的\textbf{选项}是可行的。这些选项可以通过C++交互界面类G4DeexPrecoParameters来调用。交互类G4NuclearLevelData::Instance()->GetParameters()是线程安全的，参数可以在线程见分享，同时参数可以在所有的退激核预结合类中分享。参数可能通过GEANT4中的G4State\_PreInit的状态来修改。这个类有一下的公共方法：
\begin{itemize}
    \item Dump()
    \item StreamInfo(std::ostream\&)
    \item SetLevelDensity(G4double)
    \item SetR0(G4double)
    \item SetTransitionsR0(G4double)
    \item SetFermiEnergy(G4double)
    \item SetPrecoLowEnergy(G4double)
    \item SetPhenoFactor(G4double)
    \item SetMinExcitation(G4double)
    \item SetMaxLifeTime(G4double)
    \item SetMinExPerNucleounForMF(G4double)
    \item SetMinEForMultiFrag(G4double)
    \item SetMinZForPreco(G4int)
    \item SetMinAForPreco(G4int)
    \item SetPrecoModelType(G4int)
    \item SetDeexModelType(G4int)
    \item SetNeverGoBack(G4bool)
    \item SetUseSoftCutoff(G4bool)
    \item SetUseCEM(G4bool)
    \item SetUseHETC(G4bool)
    \item SetUseAngularGen(G4bool)
    \item SetUseLongFiles(G4bool)
    \item SetCorrelatedGamma(G4bool)
    \item SetStoreAllLevels(G4bool)
    \item SetDeexChannelType(G4DeexChannelType)
\end{itemize}

对于GEANT4中除了G4CascadeInterface之外的细胞核内射线束模型，都可以使用ABLA V3来替代默认的退激模型。执行替换的最简单的方法是调用相关的细胞核内射线束反应模型交互中的SetDeExcitation()方法。及时使用了参考的物理裂变，也能执行。下面描述了此种技术：

对于明显的目的，假设你自中间能级使用FTFP\_INCLXX物理列表，这个物理列表使用 INCL++，Liege细胞核射线束模型（G4INCLXXInterface）。你可以通过添加一个运行行为（\ref{用户行为}\textcolor{red}{这里需要到6.3.1}）结合 INCL++到ABLA V3模型中，同时添加下面的代码片段到 BeginOfRunAction()中。

\begin{lstlisting}[caption={结合INCL++模型到ABLA V3}]

#include "G4HadronicInteraction.hh"
#include "G4HadronicInteractionRegistry.hh"
#include "G4INCLXXInterface.hh"
#include "G4AblaInterface.hh"
void MyRunAction::BeginOfRunAction(const G4Run * )
{
// Get hold of pointers to the INCL++ model interfaces
std::vector<G4HadronicInteraction * > interactions = G4HadronicInteractionRegistry::Instance()
->FindAllModels(G4INCLXXInterfaceStore::GetInstance()->getINCLXXVersionName());
for(std::vector<G4HadronicInteraction * >::const_iterator iInter=interactions.begin(),
˓→ e=interactions.end();
iInter!=e; ++iInter) {
G4INCLXXInterface * theINCLInterface = static_cast<G4INCLXXInterface * >( * iInter);
if(theINCLInterface) {
// Instantiate the ABLA model
G4HadronicInteraction * interaction = G4HadronicInteractionRegistry::Instance()->FindModel(
˓→ "ABLA");
G4AblaInterface * theAblaInterface = static_cast<G4AblaInterface * >(interaction);
if(!theAblaInterface)
theAblaInterface = new G4AblaInterface;
// Couple INCL++ to ABLA
G4cout << "Coupling INCLXX to ABLA" << G4endl;
theINCLInterface->SetDeExcitation(theAblaInterface);
}
}
}
\end{lstlisting}

这个技术可以被应用在任何的细胞核放射束模型中（例如。从G4VIntraNuclearTransportModel中继承的模型），除了G4CascadeInterface之外。例如，如果你的物理列表基于 Binary-Cascade模型（例如。FTF\_BIC），你需要做
\begin{lstlisting}[numbers=none]
// Get hold of a pointer to the Binary-Cascade model interface
std::vector<G4HadronicInteraction * > interactions = G4HadronicInteractionRegistry::Instance()
->FindAllModels("Binary Cascade");
for(std::vector<G4HadronicInteraction * >::const_iterator iInter=interactions.begin(),
˓→ e=interactions.end();
iInter!=e; ++iInter) {
G4BinaryCascade * theBICInterface = static_cast<G4BinaryCascade * >( * iInter);
if(theBICInterface) {
// Instantiate ABLA V3 as in the example above
// [...]
// Couple BIC to ABLA
theBICInterface->SetDeExcitation(theAblaInterface);
}
}
\end{lstlisting}

\subsection{粒子衰变物理过程}
本章节简要的介绍了安装在GEANT4中的衰变物理模型。对于执行粒子衰变的详细信息，请参考\href{http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/PhysicsReferenceManual/html/PhysicsReferenceManual.html}{ Physics Reference Manual}

\subsection*{粒子衰变类}
GEANT4提供了一个G4Decay类对于静止和在飞行的粒子衰变。G4Decay类可以应用到除下列之外的所有粒子：

\textbf{无质量的粒子，例如} G4ParticleDefinition::thePDGMass <= 0

\textbf{有“负”生命事件的粒子，例如}G4ParticleDefinition::thePDGLifeTime < 0

\textbf{短寿命粒子，例如} G4ParticleDefinition::fShortLivedFlag = True

使用G4ProcessManager中的 ActivateProcess() 和 InActivateProcess()，还有 G4ParticleDefinition::SetPDGStable()方法来打开或者关闭一些粒子的衰变过程。

除非G4DynamicParticle中定义了PreAssignedDecayProperTime，G4Decay提出了依据粒子的生命事件的步长（或者静止时的步长时间）

G4Deacy类自己不会第一粒子的衰变模型。G4ANT4提供了两种方法来定义粒子衰变模型：
\begin{itemize}
  \item 在G4DecayTable中使用G4DecayChannel，和
  \item 使用G4DynamicParticle中的thePreAssignedDecayProducts
\end{itemize}

G4Decay类计算了PhysicalInteractionLength和促进了通过G4VDecayChannel或时间产生器产生的衰变产物。见下面信息确定衰变信息的确认。

粒子之间可以共享G4Decay类的对象。在物理列表PhysicsList（见\textcolor{red}{2.5这里需要个标签}）中的\href{listing:5.2}{Listing 5.2}注册ConstructPhysics方法来注册粒子衰变过程。

\begin{lstlisting}[caption={在PhysicsList中的ConstructPhysics方法中注册粒子的衰变物理过程}][label={listing:5.2}]
#include "G4Decay.hh"
void MyPhysicsList::ConstructGeneral()
{
// Add Decay Process
G4Decay * theDecayProcess = new G4Decay();
theParticleIterator->reset();
while( ( * theParticleIterator)() ){
G4ParticleDefinition * particle = theParticleIterator->value();
G4ProcessManager * pmanager = particle->GetProcessManager();
if (theDecayProcess->IsApplicable( * particle)) {
pmanager ->AddProcess(theDecayProcess);
// set ordering for PostStepDoIt and AtRestDoIt
pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
}
}
}
\end{lstlisting}

\subsection*{衰变刚表}
每一个粒子都有他自己的G4DecayTable，这个类存储了粒子衰变模型的信息。每一个衰变模型，附带它的分支比，结合源自于G4VDecayChannel的一个对象相关的许多”衰变路径“类。默认的衰变模型在粒子的构建器的类中生成。例如，衰变中性π介子的衰变刚表包含G4PhaseSpaceDecayChannel和G4DalitzDecayChannel如下所述：
\begin{lstlisting}[numbers=none]
// create a decay channel
G4VDecayChannel * mode;
// pi0 -> gamma + gamma
mode = new G4PhaseSpaceDecayChannel("pi0",0.988,2,"gamma","gamma");
table->Insert(mode);
// pi0 -> gamma + e+ + e-
mode = new G4DalitzDecayChannel("pi0",0.012,"e-","e+");
table->Insert(mode);
\end{lstlisting}

GEANT4中定义的衰变模型的分支比参见\textbf{ Definition of a particle}\textcolor{red}{这里需要一个标签到5.3.2}。

分支比与生命时间可以在示踪时间内设置。

\begin{lstlisting}[numbers=none]
// set lifetime
G4Neutron::Neutron()->SetPDGLifeTime(885.7 * second);
// allow neutron decay
G4Neutron::Neutron()->SetPDGStable(false);
\end{lstlisting}

分支比与生命时间也可以通过使用用户命令来修改.

\textbf{例如：设置100\%的分支比给 pi0的dalitz衰变}
\begin{lstlisting}[numbers=none]
Idle> /particle/select pi0
Idle> /particle/property/decay/select 0
Idle> /particle/property/decay/br 0
Idle> /particle/property/decay/select 1
Idle> /particle/property/decay/br 1
Idle> /particle/property/decay/dump
G4DecayTable: pi0
0: BR: 0 [Phase Space] : gamma gamma
1: BR: 1 [Dalitz Decay] : gamma e- e+
\end{lstlisting}

\subsection*{时间产生器预先指定的衰变模型}


































